Russian Qt Forum

Qt => Базы данных => Тема начата: JayFOX от Февраль 16, 2010, 19:01



Название: Qt + excel не работает на других компьютера
Отправлено: JayFOX от Февраль 16, 2010, 19:01
Здравствуйте.
Есть SDK qt 4.6 последняя, сборка по умолчанию.
Подключаюсь к файлу *.xls вот так:
Код:
setDatabaseName("DRIVER={Microsoft Excel Driver (*.xls)};FIL={MS Excel}; DBQ=db.xls);
На моем компьютере работает, и, опытным путем установлено, что и на тех компьютерах, где этот проект собирался. на других же:
"Driver not loaded". Сборка release.
И пути прописывал, и наличие ODBC смотрела "панель управления -> администрирование" - присутствует, но результата нет. Помогите. Спасибо.


Название: Re: Qt + excel не работает на других компьютера
Отправлено: ufna от Февраль 16, 2010, 19:33
нужно с собой таскать DLL плагина. Нужный должен находиться в <Qt_Dir>/olugins/sqldrivers/.


Название: Re: Qt + excel не работает на других компьютера
Отправлено: JayFOX от Февраль 16, 2010, 19:38
Спасибо. Это не помогает.


Название: Re: Qt + excel не работает на других компьютера
Отправлено: pastor от Февраль 16, 2010, 19:58
В поиск по форуму - "Driver not loaded"


Название: Re: Qt + excel не работает на других компьютера
Отправлено: NicK от Февраль 17, 2010, 08:27
Првильно ли я понимаю, что в Qt opensource edition этот функционал работы с msexcel отсутствует?


Название: Re: Qt + excel не работает на других компьютера
Отправлено: Tonal от Февраль 17, 2010, 08:36
Правильно. :)
В любой Qt отсутствует функционал работы с msexcel.
Но, в Qt присутствует работа с ODBC через QtSql плагин QODBC (открытый).
А для ODBC существует драйвер работы с файлами msexcel под виндой.

Топикстартер именно этой связкой и пользовался (Qt + QODBC + ODBC + ODBC MS Excel driver)


Название: Re: Qt + excel не работает на других компьютера
Отправлено: crossly от Февраль 17, 2010, 10:01
возможно плагин не в ту папку положили... должно быть в <app path>\sqldrivers\ .... + почистить Faled ветку реестра...


Название: Re: Qt + excel не работает на других компьютера
Отправлено: Sergey B. от Февраль 17, 2010, 15:50
Правильно. :)

Не правильно. В версии Qt for Windows > 4.5.0 можно работать с EXCEL через ActiveX


Название: Re: Qt + excel не работает на других компьютера
Отправлено: Sergey B. от Февраль 17, 2010, 15:51
DSN запись для ODBC На целевом компьютере создавали? Может дело в этом?


Название: Re: Qt + excel не работает на других компьютера
Отправлено: JayFOX от Февраль 17, 2010, 17:43
FileMon показал что программа всегда селезет в c:/qt/.../plugins
то есть папку в которой стоит qt на том компьютере, на котором собирали проект. Ищу решение.


Название: Re: Qt + excel не работает на других компьютера
Отправлено: JayFOX от Февраль 17, 2010, 17:58
crossly, спасибо, помогло.

А как можно сделать чтобы dll лежали в каталоге exe файла, а не именно в "sqldrivers"?


Название: Re: Qt + excel не работает на других компьютера
Отправлено: Kolobok от Февраль 17, 2010, 18:39
А как можно сделать чтобы dll лежали в каталоге exe файла, а не именно в "sqldrivers"?

скопировать? ;)


Название: Re: Qt + excel не работает на других компьютера
Отправлено: lit-uriy от Февраль 18, 2010, 03:41
>>А как можно сделать чтобы dll лежали в каталоге exe файла, а не именно в "sqldrivers"?
никак


Название: Re: Qt + excel не работает на других компьютера
Отправлено: Tonal от Февраль 18, 2010, 08:34
Правильно. :)
Не правильно. В версии Qt for Windows > 4.5.0 можно работать с EXCEL через ActiveX
Опять не так. :)
С Ёкселем можно работать и через ODBC, и через ActiveX и через QProcess.
Можно ещё напридумывать разные варианты... :)
Но ни в одной версии Qt нет специального кода для работы именно с ёкселем.

Вот для работы с ОренОфисом - есть. :)


Название: Re: Qt + excel не работает на других компьютера
Отправлено: NicK от Февраль 18, 2010, 08:47
Цитировать
С Ёкселем можно работать и через ODBC, и через ActiveX и через QProcess.
Меня интересует возможность в кроссплатформенной программе хотя бы базовой поддержки формата .xls(экспорт табличных данных).
Насколькок я понимаю, ODBC в linux не прокатит, ActiveX тоже. Поясните, пожалуйста, как можно работать с excel через QProcess.


Название: Re: Qt + excel не работает на других компьютера
Отправлено: Tonal от Февраль 18, 2010, 12:45
Цитировать
С Ёкселем можно работать и через ODBC, и через ActiveX и через QProcess.
Меня интересует возможность в кроссплатформенной программе хотя бы базовой поддержки формата .xls(экспорт табличных данных).
Насколькок я понимаю, ODBC в linux не прокатит, ActiveX тоже. Поясните, пожалуйста, как можно работать с excel через QProcess.
Запускать, под виндой. :)

Для кроссплатформенного экспорта табличных данных проще использовать csv или dbf.
Они прекрасно открываются ёкселем. :)
Так же есть вариант сохранить как html-таблицу с расширением xls - некоторые версии открывают. :)
Есть формат XML понимаемый ёкселем.
Кроме того, есть разные либы которые умеют писать и/или читать формат бинарный xls - можно их использовать.
Я знаю 2 - обе под python.
Опять же можно попробовать напрячь ООо Calc - он имеет кроссплатформенное АПИ и умеет сохранять в xls.
Ну, в общем вариантов куча - выбирай в зависимости от потребности. :)


Название: Re: Qt + excel не работает на других компьютера
Отправлено: NicK от Февраль 18, 2010, 18:00
Цитировать
Запускать, под виндой.

Улыбнуло :)

Цитировать
Для кроссплатформенного экспорта табличных данных проще использовать csv или dbf.
Они прекрасно открываются ёкселем.
Так же есть вариант сохранить как html-таблицу с расширением xls - некоторые версии открывают.

подержку сsv уже реализовал, но таким образом удобно скидывать только голые данные без оформления.
Да. Знаем. excel умеет открывать таблицы в html, но не идеально. и без последующего редактирования все же не обойтись.

Цитировать
Есть формат XML понимаемый ёкселем.
насчет xml сам уже задумывался.

Цитировать
Кроме того, есть разные либы которые умеют писать и/или читать формат бинарный xls - можно их использовать.
Я знаю 2 - обе под python.
Тянуть лишние библиотеки не хочу.

Пока остановился на форматах CVS, HTML и ODF. Но MS Office 2003  не понимает odf. :-(


Название: Re: Qt + excel не работает на других компьютера
Отправлено: kkk777kkk от Февраль 19, 2010, 02:00
>>А как можно сделать чтобы dll лежали в каталоге exe файла, а не именно в "sqldrivers"?
никак

а если вкомпилить драйвер в QtSql4.dll, то достаточно носить с собой его и libmysql.dll  :)


Название: Re: Qt + excel не работает на других компьютера
Отправлено: crossly от Февраль 22, 2010, 19:38
crossly, спасибо, помогло.

А как можно сделать чтобы dll лежали в каталоге exe файла, а не именно в "sqldrivers"?
об этом написано в документации.... просто по умолчанию QT ищет плагины в двух папках:
1. Куда была установлена QT + \plugins;
2. Папка приложения + \plugins.


Название: Re: Qt + excel не работает на других компьютера
Отправлено: Michael от Декабрь 27, 2010, 10:43
Цитировать
А как можно сделать чтобы dll лежали в каталоге exe файла, а не именно в "sqldrivers"?
Чтобы приложение при развертывании на целевой машине пользователя (предполагается ОС Windows) увидела плагины (в т.ч. и плагины SQL драйверов) необходимо показать библиотеке Qt путь к папке с программой (или плагинами), например так:
Код:
qApp->addLibraryPath("C:\MyOrganization\MyApp\plagins");
Источник мудрости: http://doc.qt.nokia.com/4.6/deployment-windows.html