Форум сайта python.su
13
savaoЗачем, вы же будете открывать файл и писать в него, а не читать из него. главное чтоб xlwt умел открывать файлы.
В этом варианте смущает только одно - нужно будет изучить еще xlrd, если я правильно понял.
Офлайн
0
Вот в том то и проблема что, насколько я понял, читая в инетах, xlwt не умеет файлы открывать.
Для того чтобы изменять файл, надо его сперва прочесть с помощью xlrd потом записать по новой с помощью xlwt.
Офлайн
13
Прочтите это, может вам поможет, внимание обратите на xlutils.
Отредактировано Alex_HH (Март 19, 2014 15:42:45)
Офлайн
253
Для полноты картины можно упомянуть Python-UNO и win32com, если это xlsx то можно и просто lxml использовать. Вообще надо пытаться заказчика склонить к более устойчивым форматам данных. Неплохо подойдет *.ods По моему мнению это позволяет избежать характерных для микрософта проблем когда одна версия табличного процессора не понимает файлы другой версии. Лучше если это вообще будет pdf
p.s. 1
:) ods хорош тем что заставляет писать на общем подмножестве либры и MSOFiice без всякой там ерунды, поэтому то что получится окажется более устойчивым.
p.s. 2
Если шаблон такой сложный что аж не читается то это интересно. Если можете прикрепляйте файл шаблона, посмотрим как его раскурочить.
Офлайн
58
doza_and. Абсолютно согласен.
Если все же хватит душевных сил перейти на ods, то можно использовать уже готовую библиотеку: odfpy. Работает нормально и стабильно. Все по-феншую. Сам работаю исключительно с ней.
Офлайн
0
ods явно не подходит, так как xls создаются почти исключительно для пользования клиентами. А у них разный зоопарк MS Office, мало у кого стоит какая-то из версий ООо. Для Python-UNO нужно работать с ООо, а это не самый добрый вариант. Если делать такую генерацию массовой, то, боюсь, сервер ляжет. Уже есть подобный опыт генерации pdf через ООо, пришлось переходить на abiword. По поводу win32com, насколько я понимаю, он для Винды, я на этой системе не работаю.
Шаблон не такой сложный, АОО его читает довольно точно, проблема именно в MS Office 2003, который его не читает. Почему я и стараюсь сохранить формат xls.
По поводу копирования настроек имеющегося листа, вполне возможно, именно так и буду делать. В примере там довольно просто показано.
Офлайн
58
savao
А у них разный зоопарк MS Office, мало у кого стоит какая-то из версий ООо.
savao
Для Python-UNO нужно работать с ООо, а это не самый добрый вариант. Если делать такую генерацию массовой, то, боюсь, сервер ляжет. Уже есть подобный опыт генерации pdf через ООо, пришлось переходить на abiword.
Офлайн
0
Что “Чего?”? Не понял вашего вопроса.
Как никто не предлагал? А что же тогда значит “Для полноты картины можно упомянуть Python-UNO и win32com…”?
odfpy - пакет для создания и работы с odf, как я написал выше, его далеко не все клиенты прочесть смогут.
Генерация pdf связана с высказыванием про Python-UNO. Я объяснил что уже пробовал работать с генерацией документов через ООо. Опыт не самый лучший. Когда генеришь сразу один два документа, ничего. Но когда генеришь сразу сотни, то ООо съедает всю оперативу и не отдает потом. Сервер ложится.
Офлайн
0
Давненько я 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)
Отредактировано dugar (Март 21, 2014 13:11:50)
Офлайн
0
Спасибо.
Про стиль, можно будет попробовать у себя такие же настройки поставить.
А вот про последнюю строчку, я не понял, а в чем ее смысл? Просто вроде это тоже самое что и ws.write(i, 1, data1, style).
А я тут еще один косяк выяснил, оказывается в АОО xls документы открываются сильно не так как в Excell, так что то что я пробовал разные варианты и проверял в АОО, это все коту под хвост. Надо будет разные варианты alignment попробовать и тестить уже на Excell. 
Офлайн