Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ Создание .xlsx файлов

Автор: AndeR 23.11.2015, 18:43

Искал как создать Excel таблицу через Qt. Нашел только такой вариант:

QFile mFile("E:/Qt/MyCourse/Excel.xlsx");
    mFile.open(QIODevice::WriteOnly);
    mFile.close();

Файл создается, но при попытке его открыть получаю следующее сообщение:
Цитата
Не удается открыть файл 'Excel.xlsx', т.к. формат или расширение этого файла является недопустимым. Убедитесь, что файл не поврежден и расширение его имени соответствует его формату.


Подскажите как создать Excel файл для последующей работы с ним?

Автор: wiz29 23.11.2015, 19:18

Очевидно, никак, используя Qt.

Можно конечно взять QFile и реализовать на основе https://msdn.microsoft.com/en-us/library/dd922181(v=office.12).aspx.
Но думаю это врядли интересно.

Навскидку, гугл выдает http://www.libxl.com, которая может облегчить жизнь.
Можно еще https://forum.qt.io/topic/2106/excel-api-for-c-c/10 посмотреть.

Автор: Iron Bug 23.11.2015, 20:16

есть сторонние библиотеки. https://wiki.qt.io/Handling_Microsoft_Excel_file_format есть ссылка, например, на эту библиотеку:
https://github.com/dbzhang800/QtXlsxWriter

Автор: lanz 23.11.2015, 23:51

Есть еще такой вариант:
http://www.wiki.crossplatform.ru/index.php/%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_MS_Office_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_ActiveQt

Автор: Litkevich Yuriy 24.11.2015, 8:27

Ещё один вариант, натолкнулся где-то в интернете, забахать простой HTML-ный файл с таблицей, а расширение задать ему XLS, Эксель его автоматически импртирует.

Как вам такой костыль?

Цитата(AndeR @ 23.11.2015, 20:43) *
Подскажите как создать Excel файл для последующей работы с ним?
если работать из своего приложения собираешся, то естественный для Экселя путь - ActiveQt, как написал lanz, либо сторонние библиотеки, как указали предыдущие форумчане.

Автор: Iron Bug 24.11.2015, 9:37

нужно понимать, что при подключении библиотек типа ActiveQt потеряется переносимость программы на другие системы. так что лучше использовать не частные решения, а те средства, которые рекомендуются при разработке с использованием Qt, и работают с кроссплатформой.

P.S. Аккуратнее копируйте ссылки (пришлось поправить ссылку в посте lanz'а, она была битая)

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)