Как сформировать xlsx и ods файлы из приложения на Qt?
Нужно сформировать xlsx и ods файлы из приложения на Qt. Поиски готовых библиотек с открытым кодом успехом не увенчались, а использование ActiveX и подобных решений неприемлемо - приложение кроссплатформенное, и формирование файлов должно работать нативно, независимо от платформы.
Собственно, требуется самый простой вариант: таблица вообще без какого-либо форматирования. То есть написать некий класс, который заполняется данными где-нибудь в цикле и формирует файл. Нужен просто корректный тип ячеек: float или string. Есть мысль реализовать это самому, используя возможности QtXml, разумеется нашел спецификации форматов, но чуть не упал в обморок: изучать документы в нескольких частях на 5000 страниц - это выше моих сил.
Если есть у кого возможность дать пример минимально простого файла, читаемого MS Excel'ем и LO Calc'ом - буду очень благодарен, так как после сохранения этими монстрами тестового файла там сохраняется куча данных, многие из которых (как я подозреваю) необязательны.
Просьба не предлагать CSV по определённым причинам.
посмотри в сторону класса PHPExcel, правд, он может создавать только xls файлы, но проблем при открытии в поздних версиях офиса традиционно нет.) Есть даже поддержка форматирования. Работает на qt
Спасибо.
Да, тоже видел. Гугл нынче умный. Синтаксис PHP немного напрягает (не знаю его), но смысл кода видно. Как бы база есть, внутренний голос так и твердит "возьми и напиши", а здравый смысл повторяет: "ты вообще в своём уме?"
Выбираю, кого слушать :)
Смотрел, как же. Вот прямо сейчас его и ковыряю :)
Он под Qt5, то есть в готовом виде не подходит (4.8 используется). Если только как источник кода для примера.
Других вариантов, вроде, нет, я сам потратил кучу времени в поисках решения. Хотя конечно странно это. Оба формата описываются одной спецификацией, а кроссплатформенной реализации до сих пор не появилось.
Да просто она не нужна особо никому. Для экспорта данных используют CSV и не парятся. Собственно, в проекте и так сделал выгрузку в CSV, но есть некоторые сложности с разделителем, так как одно из выгружаемых полей - комментарий, а туда пользователь черта лысого может написать, попадался и разделитель (точка с запятой). В принципе не проблема, но... но вот захотелось мне (можно сказать чисто спортивный интерес) сделать экспорт в нормальные форматы.
Я бы не сказал, что не нужна. Часто вижу публикацию проектов, где из программ требуется формировать всяческие отчёты и конечно всенепременно в excel. На кой оно надо пользователям, если в общем-то вся логика и так уже в программе имеется, но вот видимо дань традиции. Сам я линуксоид, пишу на Qt, а потому пролетаю пулей мимо в этих случаях, что совсем не радует.
То же самое. Веду сейчас систему биллинга, вся бизнес-логика в БД, есть генератор отчётов, есть функционал добавления новых отчётов прямо на клиенте. То есть любую хотелку пользователей для анализа данных можно воплотить в жизнь в минуты (часы от силы). Но нет, им подавай простыню "в экселе", а мы тут сами посчитаем.
Среда разработки - линукс, но сборки есть и под win32, и пользователи успешно работают под разными платформами. Этим и обусловлено два формата, так как на виндовых машинах OOo или LO не используется.
У меня стояла задача формировать простые docx-документы по шаблону, в том числе и простые таблицы внутри с вариюрующимся количеством строк. Сделал шаблон документа, покопался внутре document.xml, там в принципе, всё понятно. Для повторения ячеек просто повторяю одну сексию несколько раз, без всяких QtXML, с помощью банального replace работаю) Топорно, но задачу решает так, как требуется. Думаю, с xlsx тоже отлично сработает. А для ods вроде библиотека была адекватная для С++.