-
Доброе утро, товарищи!
Опять мучаю все своими вопросами. На этот раз ищу средств отчетности, желательно с выгрузкой в excel, openoffice и т.п. Конечно гугл мне в помощь, но может кто уже имел дело с САБЖем?
Спасибо! -
Пока нашел что читать эксель можно с помощью xlrd, а писать с помощью xlwt. Но вот досада, кажется нельзя читать-модифицировать-писать, а без этой цепочки не сделать удобную отчетность на основе шаблонов. :(
-
Я обычно делаю так - составляю эксель документ по нужной форме и сохраняю его как веб архив (*.mht). Поскольку майкрософтский вебархив это просто текстовый файл в формате rfc822 то дальше беру какой-нить движок шаблонов для веба и его прикручиваю с нужными вставками.
Там правда есть несколько тонкостей - я обычно меняю кодировку на utf-8 (ЕМНИП ее нужно в 2-х местах переписать внутри файла - в Content-Encoding заголовка документа и в html-части) и переформатирую документ на предмет удаления знаков "=" в местах переноса строк.
Не то, чтобы совсем честно, но в принципе для достаточно простых случаев проходит.
Правда при открытии такого документа всегда будет появляться окно типа "Выберите формат файла". И если отдаете через веб надо mime прописывать как для Excel 2003, иначе не откроет.
С документами OpenOffice.org даже проще - это, если грубо, зазипованные архивы с xml-документом + картинки.
Технология в принципе такая-же - создать нужный документ - разархивировать его на составляющие а дальше прикрутить нужный шаблонный движок. После обработки шаблона не забудьте обратно все собрать в архив.
Ну а если захотите в pdf-файле отдавать, то ПМСМ самый простой способ - это pdflatex использовать. Правда там придется LaTeX изучить для правильного оформления отчета. -
Может ReportLab подойдёт?
-
Нет, мне чисто в эксель сохранять. Чтобы юзеры могли потом редактировать без проблем.
-
Кстати, довольно странно что нельзя "читать-модифицировать-писать". С чего такая уверенность?
Я только что поспотрел в туториал - не вижу особых препятствий. -
Есть пакет xlutils, он позволяет сделать такую штуку.
-
xlutils это всего лишь обертка над xlwt и xlrd, к слову сказать оба они довольно неплохи и скорее всего покроют ваши потребности.
-
Дело дрянь! xlrd читает далеко не все! Нет картинок и формул, а для отчетов это смертельно (логотипы, подписи, бланки). xlutils тоже не копирует картинки.
Вот вам блеск и нищета OpenSource'a. -
Вот вам блеск и нищета OpenSource'a.
А есть закрытые реализации с таким функционалом?
-
Полно. Я даже пользовался одной из них.
http://spreadsheetgear.com/
http://www.syncfusion.com/products/reporting-edition/xlsio
http://www.gemboxsoftware.com/GBSpreadsheet.htm
Причем могут работать без установленного офиса и без OLE. -
Вот вам блеск и нищета OpenSource'a.
Зря вы приплетаете идеологию к этому вопросу. Тут всё намного прозаичнее: сопрягая опенсорс с экселем каждый вменяемый программист хоть раз себя спросит, а не проще ли обойтись без экселя. В случаях, когда не проще, условия работы таковы, что хочется взять денег и утешиться, а уж тут какой опенсорс...
Есть масса альтернатив... нет, не экселю, но использованию экселя, и если они не подходят - это указывает на упёртых заказчиков или корпоративных нанимателей, а для таких опенсорс не пишут.
И тем не менее есть xlwt и xlrd. Вот это скорее блеск, чем нищета, если учитывать все условия.
-
Вот поэтому там где крутятся деньги процветает ASP.NET, а Django остается бедным студентам работающим за тарелку супа.
-
Там где крутятся деньги (в нашей стране) процветает выбор отнюдь не по здравому смыслу.
UPD. Когда будет открыт формат Excel'я, тогда и появятся нормальные парсеры не от Microsoft'а. А пока - продолжаем жрать кактус.
PS. Я вообще на работе генерю Excel очен извращённо: программно создаю файл на VBA, который потом скармливается cscript.exe :) Но к Python это не имеет никакого отношения. -
Зря вы приплетаете идеологию к этому вопросу.
Вот именно. Давайте вздохнём и оставим эту часть дискуссии в стороне. Вадим слишком упорно провоцирует всех на флейм, по-моему.
-
Вот будет жесть если мне придется самому поддерживать все 3 этих библиотеки. Авторы походу на них забили.
-
Тролль уходи.
-
Не уверен насчет xlrd, но вот xlwt точно умеет и картинки и формулы.
-
Полно. Я даже пользовался одной из них.
А как их использовать в обычном питоне?
-
Кроме того: ведь бывает же ещё и 2007-ой эксель, а там тоже zipped xml формат, ситуация по-моему аналогична ситуации с OO.o. Так что ещё неплохо бы знать версию Excel-я, под которую разрабатывается софт, и программное окружение: если 2003, то политикой партии могут быть везде установлены пакеты совместимости с 2007-ым экселем или ODF.
-
Итак, некоторые факты:
0. Софт пишу исключительно кроссплатформенный. Должна быть совместимость с: OpenOffice 3, MS Office >= 2003, Firefox 3, Opera 9.
1. Формат 2007-го экселя хоть и является xml разложенным по папкам, но не поддается простому прогону шаблонным движком. Хотя он легко читаем человеком, но по устройству много сложнее BIFF8 (бинарный формат экселей с 97-2003).
2. Всего BIFF есть 6 версий. Они описаны на 90% в спецификациях OpenOffice. Получены реверсинжинирингом сообщества. Спецификации легко нагуглить "BIFF8 specification".
3. Общее описание 25 стр + 250 стр конкретика. Файл xls очень сложен, он имитирует файловую систему со своими таблицами секторов, каталогами, потоками и т.п. Структуры сложны, многовложенны и запутанны. Так что авторы xlrd/wt действительно молодцы.
4. Полноценных форматов заменяющих xls нет. Везде есть существенные потери.
5. Сохранять в html не годится потому как там много потерь + он не открывается нигде кроме IE и MS Office.
Боюсь советы мне мало помогут. Нужно либо искать движок на другом языке либо писать свой. -
POI не подойдет?
-
У POI нет порта на питон. :(((
Кстати я сейчас использую именно Apache POI, только сервер отчетности пишу на java чтобы потом вызвать из питона. -
Когда была необходимость сделать odt, doc, pdf. Был взят за основу odt и запускался openoffice демоном. Подготавливался и отдавался консольно демону odt файл на переконвертацию (примеров для питона куча). Может стоит попробовать такой вариант?
-
На безрыбье как говорится и OpenOffice как MS Excel :)
Обязательно исследую эту возможность.
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.







