Alex_HH
Март 19, 2014 13:57:04
savao
В этом варианте смущает только одно - нужно будет изучить еще xlrd, если я правильно понял.
Зачем, вы же будете открывать файл и писать в него, а не читать из него. главное чтоб xlwt умел открывать файлы.
savao
Март 19, 2014 14:15:31
Вот в том то и проблема что, насколько я понял, читая в инетах, xlwt не умеет файлы открывать.
Для того чтобы изменять файл, надо его сперва прочесть с помощью xlrd потом записать по новой с помощью xlwt.
Alex_HH
Март 19, 2014 15:42:30
doza_and
Март 19, 2014 16:55:36
Для полноты картины можно упомянуть Python-UNO и win32com, если это xlsx то можно и просто lxml использовать. Вообще надо пытаться заказчика склонить к более устойчивым форматам данных. Неплохо подойдет *.ods По моему мнению это позволяет избежать характерных для микрософта проблем когда одна версия табличного процессора не понимает файлы другой версии. Лучше если это вообще будет pdf
p.s. 1
:) ods хорош тем что заставляет писать на общем подмножестве либры и MSOFiice без всякой там ерунды, поэтому то что получится окажется более устойчивым.
p.s. 2
Если шаблон такой сложный что аж не читается то это интересно. Если можете прикрепляйте файл шаблона, посмотрим как его раскурочить.
4kpt_II
Март 19, 2014 17:46:14
doza_and. Абсолютно согласен.
Если все же хватит душевных сил перейти на ods, то можно использовать уже готовую библиотеку: odfpy. Работает нормально и стабильно. Все по-феншую. Сам работаю исключительно с ней.
savao
Март 19, 2014 23:25:27
ods явно не подходит, так как xls создаются почти исключительно для пользования клиентами. А у них разный зоопарк MS Office, мало у кого стоит какая-то из версий ООо. Для Python-UNO нужно работать с ООо, а это не самый добрый вариант. Если делать такую генерацию массовой, то, боюсь, сервер ляжет. Уже есть подобный опыт генерации pdf через ООо, пришлось переходить на abiword. По поводу win32com, насколько я понимаю, он для Винды, я на этой системе не работаю.
Шаблон не такой сложный, АОО его читает довольно точно, проблема именно в MS Office 2003, который его не читает. Почему я и стараюсь сохранить формат xls.
По поводу копирования настроек имеющегося листа, вполне возможно, именно так и буду делать. В примере там довольно просто показано.
4kpt_II
Март 19, 2014 23:54:05
savao
А у них разный зоопарк MS Office, мало у кого стоит какая-то из версий ООо.
Чего????
savao
Для Python-UNO нужно работать с ООо, а это не самый добрый вариант. Если делать такую генерацию массовой, то, боюсь, сервер ляжет. Уже есть подобный опыт генерации pdf через ООо, пришлось переходить на abiword.
Вам никто не предлагал PyUNO. odfpy работает достаточно быстро и не сильно жрет ресурсы. И причем здесь генерация pdf через OOO и создание документа на стороне с применением специализированного пакета python? Как эти два процесса вообще связаны?
savao
Март 20, 2014 00:47:39
Что “Чего?”? Не понял вашего вопроса.
Как никто не предлагал? А что же тогда значит “Для полноты картины можно упомянуть Python-UNO и win32com…”?
odfpy - пакет для создания и работы с odf, как я написал выше, его далеко не все клиенты прочесть смогут.
Генерация pdf связана с высказыванием про Python-UNO. Я объяснил что уже пробовал работать с генерацией документов через ООо. Опыт не самый лучший. Когда генеришь сразу один два документа, ничего. Но когда генеришь сразу сотни, то ООо съедает всю оперативу и не отдает потом. Сервер ложится.
dugar
Март 21, 2014 13:03:43
Давненько я xlwt не трогал. Сейчас раскопал старый проектик свой и там нашлись такие строки:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from xlwt import Workbook, XFStyle, Borders, Pattern, Font, Alignment, easyxf
style = easyxf('font: name Times New Roman;' 'borders: left thin, right thin, top thin, bottom thin;' 'alignment: horizontal centre;' 'alignment: vertical justified;')
wb = Workbook()
ws = wb.add_sheet(u'Ведомость')
ws.portrait = False
ws.write(i, 0, data0, style)
ws.write_merge(i, i, 1, 1, data1, style)
Последняя строчка и style тебе, наверное, поможет. Проверь.
savao
Март 21, 2014 14:38:21
Спасибо.
Про стиль, можно будет попробовать у себя такие же настройки поставить.
А вот про последнюю строчку, я не понял, а в чем ее смысл? Просто вроде это тоже самое что и ws.write(i, 1, data1, style).
А я тут еще один косяк выяснил, оказывается в АОО xls документы открываются сильно не так как в Excell, так что то что я пробовал разные варианты и проверял в АОО, это все коту под хвост. Надо будет разные варианты alignment попробовать и тестить уже на Excell.