Общая задача такова: необходимо написать нечто вроде шаблонной системы для экселевских файлов, т.е. на входе есть файл, в которыми метками проставлены места для вставки данных, а на выходе даётся сгенерированный по этому шаблону файл с нужными данными.
xlutils, к сожалению, не подходит, т.к. убивает всё оформление подчистую. По идее можно используя win32com работать напрямую через Эксель, но останавливает, то что очень не хотелось бы связываться с Windows.
Конечной идеей стало использовать OpenOffice, вроде как есть Python Uno Bridge и Danny's OpenOffice.org library. Но дело в том, что мне хотелось бы использовать LibreOffice и не понятно насколько соответствует LO написанное для OO.
Итоговые вопросы следующие: есть ли решения задачи более простые чем использование uno? И возможно ли использовать LibreOffice вместо OpenOffice?
Рабочих варианта 4:
1) uno. медленно (очень! на моих бенчмарках получалась обработка ~10-20 ячеек/секунду), печально, ОО должен быть запущен на той же машине что и скрипт. плюсы — собственно 100я гарантия
2) xslx — как уже сказали, очень простой формат, парсится «руками».
3) xlutils — странно что убивал оформление если честно, xlutils.copy мои подобные задачи решал на 100% (не без напильника, да).
4) (editor's choice) формировать xlsx, потом через OO при необходимости конверить в xls. 2-3 секунды на файл
Хм… а вам нужен какой формат файла на выходе? xls или xlsx? Просто во втором случае его наверное быстрее и проще собирать ручками из готового xlsx распаковав и правив xml напрямую.
Хотя даже если вам нужен xls, то полученный таким образом xlsx можно при помощи command-line утилиток быстро конвертить в xls или во что еще.
По крайней мере такой способ мне кажется более удобным (особенно если речь про какое либо дополнение к веб-сайту или что-то еще онлайновое), чем тянуть за собой Libre/OpenOffice и т.д.
xlsx я рассматривал как крайний вариант, т.к. полученный файл будет рассылаться клиентам, у которых вполне вероятно будет старый офис. Хотя вариант с конвертированием я действительно упустил.