Найти - Пользователи
Полная версия: Проблемы с генерацией xls файлов в Python
Начало » Python для новичков » Проблемы с генерацией xls файлов в Python
1 2 3 4
Alex_HH
savao
В этом варианте смущает только одно - нужно будет изучить еще xlrd, если я правильно понял.
Зачем, вы же будете открывать файл и писать в него, а не читать из него. главное чтоб xlwt умел открывать файлы.
savao
Вот в том то и проблема что, насколько я понял, читая в инетах, xlwt не умеет файлы открывать.
Для того чтобы изменять файл, надо его сперва прочесть с помощью xlrd потом записать по новой с помощью xlwt.
Alex_HH
Прочтите это, может вам поможет, внимание обратите на xlutils.
doza_and
Для полноты картины можно упомянуть Python-UNO и win32com, если это xlsx то можно и просто lxml использовать. Вообще надо пытаться заказчика склонить к более устойчивым форматам данных. Неплохо подойдет *.ods По моему мнению это позволяет избежать характерных для микрософта проблем когда одна версия табличного процессора не понимает файлы другой версии. Лучше если это вообще будет pdf

p.s. 1
:) ods хорош тем что заставляет писать на общем подмножестве либры и MSOFiice без всякой там ерунды, поэтому то что получится окажется более устойчивым.

p.s. 2

Если шаблон такой сложный что аж не читается то это интересно. Если можете прикрепляйте файл шаблона, посмотрим как его раскурочить.
4kpt_II
doza_and. Абсолютно согласен.
Если все же хватит душевных сил перейти на ods, то можно использовать уже готовую библиотеку: odfpy. Работает нормально и стабильно. Все по-феншую. Сам работаю исключительно с ней.
savao
ods явно не подходит, так как xls создаются почти исключительно для пользования клиентами. А у них разный зоопарк MS Office, мало у кого стоит какая-то из версий ООо. Для Python-UNO нужно работать с ООо, а это не самый добрый вариант. Если делать такую генерацию массовой, то, боюсь, сервер ляжет. Уже есть подобный опыт генерации pdf через ООо, пришлось переходить на abiword. По поводу win32com, насколько я понимаю, он для Винды, я на этой системе не работаю.

Шаблон не такой сложный, АОО его читает довольно точно, проблема именно в MS Office 2003, который его не читает. Почему я и стараюсь сохранить формат xls.

По поводу копирования настроек имеющегося листа, вполне возможно, именно так и буду делать. В примере там довольно просто показано.
4kpt_II
savao
А у них разный зоопарк MS Office, мало у кого стоит какая-то из версий ООо.

Чего????

savao
Для Python-UNO нужно работать с ООо, а это не самый добрый вариант. Если делать такую генерацию массовой, то, боюсь, сервер ляжет. Уже есть подобный опыт генерации pdf через ООо, пришлось переходить на abiword.

Вам никто не предлагал PyUNO. odfpy работает достаточно быстро и не сильно жрет ресурсы. И причем здесь генерация pdf через OOO и создание документа на стороне с применением специализированного пакета python? Как эти два процесса вообще связаны?
savao
Что “Чего?”? Не понял вашего вопроса.

Как никто не предлагал? А что же тогда значит “Для полноты картины можно упомянуть Python-UNO и win32com…”?

odfpy - пакет для создания и работы с odf, как я написал выше, его далеко не все клиенты прочесть смогут.

Генерация pdf связана с высказыванием про Python-UNO. Я объяснил что уже пробовал работать с генерацией документов через ООо. Опыт не самый лучший. Когда генеришь сразу один два документа, ничего. Но когда генеришь сразу сотни, то ООо съедает всю оперативу и не отдает потом. Сервер ложится.
dugar
Давненько я 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
Спасибо.
Про стиль, можно будет попробовать у себя такие же настройки поставить.
А вот про последнюю строчку, я не понял, а в чем ее смысл? Просто вроде это тоже самое что и ws.write(i, 1, data1, style).
А я тут еще один косяк выяснил, оказывается в АОО xls документы открываются сильно не так как в Excell, так что то что я пробовал разные варианты и проверял в АОО, это все коту под хвост. Надо будет разные варианты alignment попробовать и тестить уже на Excell.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB