Считывание данных с файла(.xls) c помощью ODBC в QT

kyznec24rus
Дата: 25.06.2015 13:10:25
Добрый день. Существует файл Microsoft Excel на одном листе несколькими таблиц(Пример таблиц прикреплен изображением). Ниже привожу код с использованием ODBC. Проблема в том, что я не понимаю, какой запрос нужно сформировать что бы в name поступила строка данных за все 12 месяцев сразу(одна строка таблицы).
 QSqlDatabase db = QSqlDatabase::addDatabase("QODBC","xlsdb");
   db.setDatabaseName("DRIVER={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};FIL={MS Excel};READONLY=FALSE;DBQ=A:\QT\project\practicca1\2008(1).xls;");

   if(!db.open())
       qDebug() << "Cannot open database:" << db.lastError();
   QSqlQuery query(db);
   query.exec("SELECT * FROM [2008(1)]");
    qDebug() <<  query.QSqlQuery::lastError();

   while (query.next()) {
       QString name = query.value(0).toString();
       qDebug() << name;
     }
   db.QSqlDatabase::close();
   QSqlDatabase::removeDatabase("xlsdb");
m_Sla
Дата: 25.06.2015 13:38:23
У меня с такими таблицами ODBC не работал.
Получал данные используя COM 16947676
kyznec24rus
Дата: 25.06.2015 16:36:27
m_Sla, спасибо) Существует ли вариант не с задачей нужных строк, а с поиском строки таблицы по такому типу:
((\d)?(\d\s\S)?(\d\s\S)?(\d\s\S)?(\d\s\S)?(\d\s\S)?(\d\s\S)?(\d\s\S)?(\d\s\S)?(\d\s\S)?(\d\s\S)?(\d\s\S)?(\d\s\S))");
mayton
Дата: 25.06.2015 22:56:12
kyznec24rus, это какой-то капец просто. У любого начинающего разработчика
подобный паттерн вызовет приступ тоски и ужаса. И жуткое желание завязать
с разработкой и пойти в сейлс-манагеры.

У меня он вызывает сомнение в целесообразности использования аппарата регулярок.
Кажется что должен быть альтернативный вариат как проверить строку на соответствие.

Или побить выражение хотя-бы на составляющие части.
m_Sla
Дата: 26.06.2015 05:54:02
kyznec24rus
m_Sla, спасибо) Существует ли вариант не с задачей нужных строк, а с поиском строки таблицы по такому типу:
((\d)?(\d\s\S)?(\d\s\S)?(\d\s\S)?(\d\s\S)?(\d\s\S)?(\d\s\S)?(\d\s\S)?(\d\s\S)?(\d\s\S)?(\d\s\S)?(\d\s\S)?(\d\s\S))");
Сам не делал, думаю можно.
http://lmgtfy.com/?q=excel regex function
kyznec24rus
Дата: 27.06.2015 13:59:50
Как открыть файл .xls что бы можно было его читать и обрабатывать регулярными выражениями?
White Owl
Дата: 28.06.2015 02:44:14
kyznec24rus
Как открыть файл .xls что бы можно было его читать и обрабатывать регулярными выражениями?
Через COM, как уже показали.
Читаешь одну ячейку, прогоняешь ее значение через свое регулярное выражение. Решаешь что с этой ячейкой делать. Потом берешь другую ячейку и повторяешь...
kyznec24rus
Дата: 28.06.2015 15:43:16
White Owl,
Спасибо)
Подскажите, как программно создать файл ms access&