| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt] Чтение excel файлов |
| Автор: math64 17.7.2011, 10:12 | ||||||
| Для платформенно-независимого чтения excel файлов скачал библиотеку libxls Написана на чистом С, без учёта С++, поэтому приходится делать include так:
Вместо struct st_row_data писать st_row::st_row_data. Не считывает русские символы, поэтому приходится добавлять исходинки в проект и заменить функцию перекодировки:
Для чтения файлов используется stdio, при открытии нужно задавать имя файла в char*,
Как получить char* fileName из QString, если там есть русские буквы? |
| Автор: kunashir 19.7.2011, 08:19 |
| math64, Вы дальше продвинулись, я так и не решил проблемы со считыванием русских букв. Про путь тоже не скажу. Но на сколько я понял сейчас автор libxls участвует в разработке другой библиотеки - xlslib, она уже на C++ написана, у меня получилось ее собрать под Linux довольно легко, а вот под Виндовс нет (наверное я что-то не так делаю). Вот http://sourceforge.net/projects/xlslib/ |
| Автор: Artemon 19.7.2011, 09:10 |
| Возможно данная тема вам поможет: http://www.prog.org.ru/topic_2643_0.html |
| Автор: math64 19.7.2011, 11:23 | ||
| kunashir, xlslib - только для записи (как я понял) libxls - только для чтения Artemon, Как получить строку в Windows-1251 кодировке как раз понятно, но для Linux нужно KOI-8 (впрочем, зависит от дистрибутива), как определить нужную кодировку?
|
| Автор: math64 19.7.2011, 11:52 | ||
Для правильного чтения названий страниц измените xls.c:
|
| Автор: Vizir1989 12.12.2012, 10:00 |
| пытаюсь прочитать xls файлы, скачал библиотеку xlsreader. Пишу extern "C" { #include <libxls/xls.h> } приложение собирается, но при запуске пишет "Программа неожиданно завершилась". Завершилась с кодом 0. |
| Автор: bsa 12.12.2012, 10:29 |
| Vizir1989, запусти под отладчиком. QString::toLocal8Bit() |
| Автор: Vizir1989 12.12.2012, 10:59 |
| отладчик показал что программа падает на this->setLayout(vLayout); Причем падает на этом месте если есть QTableWidget или QTableView. Кроме них у меня есть QComboBox и QButton. Если убрать QTableWidget/QTableView то программа норм собирается. Если убрать extern "C" { #include <libxls/xls.h> } то программа нормально запускается с QTableWidget/QTableView запускается. Падает программа с сегмент фаултинг |
| Автор: bsa 12.12.2012, 11:57 |
| Vizir1989, у тебя случаем нет статических переменных? |
| Автор: Vizir1989 13.12.2012, 11:05 | ||
Статических нет. |