Добрый день.
Я извлекаю данные из excel(2003) таблицы, используя драйвер ODBC.
Предположим, что формат таблицы следующий (пусть она будет состоять из одного столбца Title) :
Title
A13
16
И так, данные выборки полученной запросом SELECT можно извлечь командой
Пробегая по каждому столбцу в цикле (у нас он всего 1), а затем переходя на следующую строку методом .next (я не буду описывать весь механизм).
Результат, который возвращает query.value представлен типом QVariant и как сказано в статье
http://doc.crossplatform.ru/qt/4.6.x/sql-sqlstatements.html :
может хранить значения различных типов C++ и ядра Qt, такие как int, QString и QByteArray. Различные типы значений базы данных автоматически приводятся к ближайшему эквиваленту в Qt. Для первой строки QVariant вернет данные типа QString: QVariant(QString, "A13").
Для второй строки QVarint возвращает следующий результат: QVariant(QString, "").
Видимо захардкоривая то, что данный столбец имеет тип данных QString (возможно я не прав).Если поменять кортежи местами результаты будет следующий: QVariant(double, 16) и QVariant(double, 0). Вместо A13 возвращается 0.
Таким образом, имея (по мнению QVariant) разнородные данные, мы теряем часть значений, которые заменяются либо пустыми строками, либо нулями. Вопрос, как обойти подобного рода проблему? Работа с типами ячеек непосредственно в excel файле не помогает.
P.S. Данная тема обсуждалась когда-то,но решение, так и не было предложено. Ссылка:
http://www.cyberforum.ru/qt/thread540380.html Спасибо.