Задать вопрос

Как сформировать xlsx и ods файлы из приложения на Qt?

Нужно сформировать xlsx и ods файлы из приложения на Qt. Поиски готовых библиотек с открытым кодом успехом не увенчались, а использование ActiveX и подобных решений неприемлемо - приложение кроссплатформенное, и формирование файлов должно работать нативно, независимо от платформы.

Собственно, требуется самый простой вариант: таблица вообще без какого-либо форматирования. То есть написать некий класс, который заполняется данными где-нибудь в цикле и формирует файл. Нужен просто корректный тип ячеек: float или string. Есть мысль реализовать это самому, используя возможности QtXml, разумеется нашел спецификации форматов, но чуть не упал в обморок: изучать документы в нескольких частях на 5000 страниц - это выше моих сил.

Если есть у кого возможность дать пример минимально простого файла, читаемого MS Excel'ем и LO Calc'ом - буду очень благодарен, так как после сохранения этими монстрами тестового файла там сохраняется куча данных, многие из которых (как я подозреваю) необязательны.

Просьба не предлагать CSV по определённым причинам.
  • Вопрос задан
  • 6263 просмотра
Подписаться 5 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
@Jiendarbiev
посмотри в сторону класса PHPExcel, правд, он может создавать только xls файлы, но проблем при открытии в поздних версиях офиса традиционно нет.) Есть даже поддержка форматирования. Работает на qt
Ответ написан
Вот этот проект не смотрели? Я сам его не пробовал, но по описанию вроде самое оно. Он конечно не работает с ods, но всё же.
Ответ написан
@39dotyt
У меня стояла задача формировать простые docx-документы по шаблону, в том числе и простые таблицы внутри с вариюрующимся количеством строк. Сделал шаблон документа, покопался внутре document.xml, там в принципе, всё понятно. Для повторения ячеек просто повторяю одну сексию несколько раз, без всяких QtXML, с помощью банального replace работаю) Топорно, но задачу решает так, как требуется. Думаю, с xlsx тоже отлично сработает. А для ods вроде библиотека была адекватная для С++.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы