Уведомления

Группа в Telegram: @pythonsu

#1 Март 19, 2014 13:57:04

Alex_HH
Зарегистрирован: 2014-03-03
Сообщения: 91
Репутация: +  13  -
Профиль   Отправить e-mail  

Проблемы с генерацией xls файлов в Python

savao
В этом варианте смущает только одно - нужно будет изучить еще xlrd, если я правильно понял.
Зачем, вы же будете открывать файл и писать в него, а не читать из него. главное чтоб xlwt умел открывать файлы.



————–
Зимой и летом heavy metall.
Технический прогресс - это падение вверх. Alex_HH (с)
Эстетизация жестокости есть квинтэссенция смысла человеческого существования. Alex_HH (с)
После бога идет не пустота, там метаданные. Alex_HH (с)

Офлайн

#2 Март 19, 2014 14:15:31

savao
Зарегистрирован: 2013-07-13
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с генерацией xls файлов в Python

Вот в том то и проблема что, насколько я понял, читая в инетах, xlwt не умеет файлы открывать.
Для того чтобы изменять файл, надо его сперва прочесть с помощью xlrd потом записать по новой с помощью xlwt.

Офлайн

#3 Март 19, 2014 15:42:30

Alex_HH
Зарегистрирован: 2014-03-03
Сообщения: 91
Репутация: +  13  -
Профиль   Отправить e-mail  

Проблемы с генерацией xls файлов в Python

Прочтите это, может вам поможет, внимание обратите на xlutils.



————–
Зимой и летом heavy metall.
Технический прогресс - это падение вверх. Alex_HH (с)
Эстетизация жестокости есть квинтэссенция смысла человеческого существования. Alex_HH (с)
После бога идет не пустота, там метаданные. Alex_HH (с)

Отредактировано Alex_HH (Март 19, 2014 15:42:45)

Офлайн

#4 Март 19, 2014 16:55:36

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Проблемы с генерацией xls файлов в Python

Для полноты картины можно упомянуть Python-UNO и win32com, если это xlsx то можно и просто lxml использовать. Вообще надо пытаться заказчика склонить к более устойчивым форматам данных. Неплохо подойдет *.ods По моему мнению это позволяет избежать характерных для микрософта проблем когда одна версия табличного процессора не понимает файлы другой версии. Лучше если это вообще будет pdf

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

p.s. 2

Если шаблон такой сложный что аж не читается то это интересно. Если можете прикрепляйте файл шаблона, посмотрим как его раскурочить.



Офлайн

#5 Март 19, 2014 17:46:14

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Проблемы с генерацией xls файлов в Python

doza_and. Абсолютно согласен.
Если все же хватит душевных сил перейти на ods, то можно использовать уже готовую библиотеку: odfpy. Работает нормально и стабильно. Все по-феншую. Сам работаю исключительно с ней.

Офлайн

#6 Март 19, 2014 23:25:27

savao
Зарегистрирован: 2013-07-13
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с генерацией xls файлов в Python

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

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

По поводу копирования настроек имеющегося листа, вполне возможно, именно так и буду делать. В примере там довольно просто показано.

Офлайн

#7 Март 19, 2014 23:54:05

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Проблемы с генерацией xls файлов в Python

savao
А у них разный зоопарк MS Office, мало у кого стоит какая-то из версий ООо.

Чего????

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

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

Офлайн

#8 Март 20, 2014 00:47:39

savao
Зарегистрирован: 2013-07-13
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с генерацией xls файлов в Python

Что “Чего?”? Не понял вашего вопроса.

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

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

Генерация pdf связана с высказыванием про Python-UNO. Я объяснил что уже пробовал работать с генерацией документов через ООо. Опыт не самый лучший. Когда генеришь сразу один два документа, ничего. Но когда генеришь сразу сотни, то ООо съедает всю оперативу и не отдает потом. Сервер ложится.

Офлайн

#9 Март 21, 2014 13:03:43

dugar
От:
Зарегистрирован: 2010-05-23
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с генерацией xls файлов в Python

Давненько я 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 тебе, наверное, поможет. Проверь.



Отредактировано dugar (Март 21, 2014 13:11:50)

Офлайн

#10 Март 21, 2014 14:38:21

savao
Зарегистрирован: 2013-07-13
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с генерацией xls файлов в Python

Спасибо.
Про стиль, можно будет попробовать у себя такие же настройки поставить.
А вот про последнюю строчку, я не понял, а в чем ее смысл? Просто вроде это тоже самое что и ws.write(i, 1, data1, style).
А я тут еще один косяк выяснил, оказывается в АОО xls документы открываются сильно не так как в Excell, так что то что я пробовал разные варианты и проверял в АОО, это все коту под хвост. Надо будет разные варианты alignment попробовать и тестить уже на Excell.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version