![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Алексей1153 |
![]()
Сообщение
#1
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
задача - считать исходные данные из экселевского файла. Имеется три колонки, каждую нужно поместить в свой вектор
по всяким примерам с форума сделал чтение таким образом
но, блин, так долго вытаскивается даже 1000 значений - капец. Понимаю, что проблема в том, что я по ячейке добываю. Может, как-то не по ячейке можно доставать, а сразу колонку ? |
|
|
lanz |
![]()
Сообщение
#2
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Можно получить объект Range, а потом прочитать его value как QVariantList.
Если рэнж прямоугольный, получится QVariantList QVariantList-ов. Не проверял ![]() Раскрывающийся текст
|
|
|
Алексей1153 |
![]()
Сообщение
#3
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
lanz, спасибо. Даже работает ) Только я применил вариант с циферными индексами
Range(Cells(1, 1), Cells(100, 3)) Ужасает только количество delete ![]() Кстати, он возвращает QVariantList of QVariantList, только это набор строк, что не совсем кузяво (но терпимо). Никак его не заставить возвращать набор колонок ? |
|
|
lanz |
![]()
Сообщение
#4
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Не пробовал. Можно посмотреть в сторону свойства Columns или сделать три Range по одному для каждой колонки.
|
|
|
Алексей1153 |
![]()
Сообщение
#5
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
оставил так, вроде устраивает
|
|
|
Olga |
![]()
Сообщение
#6
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 5.2.2014 Пользователь №: 4048 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Добрый вечер!
Стоит задача считать данные из excel файла и добавить их в БД MySql. В файле содержиться более 30000 строк. Если считываю по ячейки и вставляю в БД, то все это делается ооооооооооооочень медленно. Может есть более быстрый способ??? |
|
|
lanz |
![]()
Сообщение
#7
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Можно использовать объект Range, как я уже писал тут выше. Он работает значительно быстрее.
Приведите пример как вы делаете, может можно срезать углы где-то. |
|
|
Pavel12345 |
![]()
Сообщение
#8
|
Новичок Группа: Новичок Сообщений: 1 Регистрация: 9.1.2015 Пользователь №: 4311 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Вы уверены, что хорошо знаете эксель? Пройдите курс MS Excel Профессионал от специалистов ведущей международной консалтинговой компании. Вы научитесь работать в экселе в 2 раза быстрее и будете уверены, что решаете каждую задачу наиболее эффективным способом. Внимание! Осталось 3 места, до пятницы скидка 20%. Оставьте заявку по ссылке: http://msexcel.pro?ch=frm
|
|
|
Гость_Гость_* |
![]()
Сообщение
#9
|
Гости ![]() |
Здравствуйте.
Похожая задача. Нужно читать 3 столбца из *.csv файла. Столбцы читаю (вижу в отладчике значения). .................... Файл *.h QVariantList List1; QVariantList List2; QVariantList List3; ............................. Файл *.cpp ...................... QAxObject *range1 = worksheet->querySubObject("Range(const QVariant&)","A1:A16000"); QAxObject *range2 = worksheet->querySubObject("Range(const QVariant&)","B1:B16000"); QAxObject *range3 = worksheet->querySubObject("Range(const QVariant&)","C1:C16000"); List1 = qvariant_cast<QVariantList> (range1->dynamicCall("Value()")); List2 = qvariant_cast<QVariantList> (range2->dynamicCall("Value()")); List3 = qvariant_cast<QVariantList> (range3->dynamicCall("Value()")); ............................................................. А как выделить элемен из списка List1, List2, List3 - не знаю. Пробовал по разному: ................................................ QVariantList::const_iterator it = List1.constBegin(); int i=1; while (it != List1.constEnd()) { myVarName[i].setValue((*it).toString());//QVariant myVarName[16000] i++; it++; } Не получается. Нужно преобразов List1 в массив строк, List2 в массив даты времени, List3 в массив значений. В отладчике вижу тип QString, но даже его не могу засунуть в myVarName. Спасибо. |
|
|
lanz |
![]()
Сообщение
#10
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Цитата Не получается. Что именно не получается? |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 17.2.2025, 8:00 |