Russian Qt Forum

Qt => ActiveX => Тема начата: PavelVX от Апрель 21, 2017, 11:16



Название: Чтение из ячейки excel, QVariant возвращает qlonglong, а не double
Отправлено: PavelVX от Апрель 21, 2017, 11:16
Добрый день!
Подскажите, в какую сторону копать.
Win7 x64!
Читаю данные из excel.
В файлике экселя в ячейку внесено 12.6488р

Написал функцию, возвращает QVariant:
...
    QAxObject* Cell1 = ActiveSheet->querySubObject("Cells(QVariant&,QVariant&)", lrow, lcol);
    return Cell1->property("Value");

Запускаю, на выходе получаю 126488!
qDebug выводит QVariant(qlonglong, 126488)!

Удивляюсь, перехожу за соседний комп: win7 x32.
Код компилирую, запускаю:
qDebug выводит QVariant(double, 12.6488). Все логично и нормально.

Где искать косяк и почему так?
Возможно причина не в разрядности ОС, но других различий я не нашел.

PS на данном форуме проводится чистка давно не заходивших что ли? Ваша учетная запись не найдена, завел себя по новой.


Название: Re: Чтение из ячейки excel, QVariant возвращает qlonglong, а не double
Отправлено: __Heaven__ от Апрель 21, 2017, 12:10
Я бы начал поиски с настроек локализации и символа разделителя


Название: Re: Чтение из ячейки excel, QVariant возвращает qlonglong, а не double
Отправлено: PavelVX от Апрель 22, 2017, 05:56
Специально посмотрел, все одинаковое.
Если в аксесе запросить, то тоже правильно выводит :(
    MsgBox ws.Cells(5, cost)
выведет 12.6488


Название: Re: Чтение из ячейки excel, QVariant возвращает qlonglong, а не double
Отправлено: __Heaven__ от Апрель 24, 2017, 10:55
Попробуйте свойство Value2 ещё посмотреть.
Также рекомендую создать vba макрос в книге с тем же содержимым, что и в c++ коде и проверить как он работает на тех же машинах