Уведомления

Группа в Telegram: @pythonsu

#1 Март 21, 2014 15:50:14

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

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

savao
это все коту под хвост
Вот именно. Если на той стороне зоопарк офисов, то поддержка очень скоро станет весьма трудоемкой. :(
Я лет пять заказчикам документы в doc/docx просто отказываюсь отдавать. Не хотят играть по этим правилам пусть идут искать другого исполнителя. С экселом сложнее, там есть некоторая функциональность.



Офлайн

#2 Март 21, 2014 15:51:24

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

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


Обязательно попробуй стиль. Всё дело в нём. Ширину ячейки (столбца) ты должен задать руками:

ws.col(0).width = 3100
ws.col(1).width = 1900
ws.col(2).width = 1900
А вот выравнивание по высоте (авто размер ячейки) автоматически подтянется если использовать стиль указанный в предыдущем сообщении.
savao
А вот про последнюю строчку, я не понял, а в чем ее смысл? Просто вроде это тоже самое что и ws.write(i, 1, data1, style)
ws.write(0,0,'A1') #запишем значение А1 в ячейку А1
ws.write(0,1,'B1') #запишем значение В1 в ячейку В1
Merged groups of cells can be inserted using the write_merge method of the Sheet
class:
ws.write_merge(0,2,0,5,'Merged',style) #объединим ячейки 3Rx6C и запишем в получившуюся ячейку A1 'Merged'
Так понятно? Очень удобно использовать для длинных строк.
Допустим у тебя задан размер (ширина) столбца ws.col(3).width = 2700. В него помещается строка ‘0123456789’ шрифтом Times New Roman 10. Вот и считай! Если нужна максимальная длина >10 и <20 символов (я не беру ширину букв, просто пример) объединяем две ячейки и ставим style с выравниванием автоматом по высоте. Всё.



Офлайн

#3 Март 21, 2014 16:36:05

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

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

2 doza_and: Дело в том что я пишу проект - веб-ориентированный CRM. И мне надо сделать так чтобы его пользователям было удобно общаться с клиентами. Заказчик - юрилическая компания, работающая с бизнесом. Клиенты у нее самые разнообразные, и ставить им условия они не могут. Конкретно эта экселька идет как приложение к комерческому предложению. Если менеджер заказчика начнет указывать сотрудникам клиента какой софт они должны себе поставить, их пошлют просто и все. Поэтому приходится где-то лишние усилия прилагать но делать так чтобы тем кто будет получать эти файлы, было удобно. И чтобы сотрудникам фирмы заказчика было удобно. Так что приходится повертеться.

2 dugar: да, про ширину столбца я уже понял, что придется ручками вписывать. По поводу стиля, вы уверены? Просто если задавать стиль, определяя объект XFStyle напрямую, то для того чтобы был перенос по словам надо поставить параметр wrap в значение 1 (по умлолчанию он равен 0). Но вот с этой оберткой я не работал, надо будет как-то попробовать. Думаю, мне xls файлы еще много делать придется. По поводу write_merge() я знаю что она делает. Просто в приведенном вами примере она была эквивалентна просто write(), так как объединяла одну ячейку саму с собой, ячейку (i, 1). Поэтому я и удивился.

2 all: Всем большое спасибо, было приятно что столько людей помогают. На данный момент делать эту xls-ку я закончил, жду ответа от заказчика, все ли его устраивает.
Еще раз, спасибо! Божией помощи всем!

Офлайн

#4 Март 21, 2014 16:55:26

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

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

savao
Так что приходится повертеться
Да я прекрасно понимаю что вы неспроста этим занимаетесь. Я стараюсь делиться опытом. Если это приложение к договору, то неплохо подходит pdf может pdf формы. У нас часто это еще и защищенный pdf чтобы ничего не испортил клиент. Опять мой опыт показывает что часто постановку задачи можно изменить. Заказчик пишет то что знает, а вы можете знать чтото еще. Но вам конечно видней. Успехов в вашем нелегком труде!



Офлайн

#5 Март 21, 2014 17:03:56

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

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

Тут как раз таки нужен именно xls или любой другой редактируемый формат, насколько я понял заказчика, так как это все не фиксируется изначально. Вот договор я пошлю в pdf. Я не силен в юриспруденции. Но понимаю так что им нужно чтобы этот документ был редактируемым на стороне клиента.
Спасибо за пожелания.

Офлайн

#6 Март 21, 2014 20:02:46

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

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

Есть еще вариант сделать одинаковых три файла, чтобы они отгружались клиенту.
В одном проекте клиенту отгружался pdf, xls и ods и все с одинаковым содержимым. Причина была банальна - не всегда xls открывался корректно… А он уже из прикрепленного выбирал то, что ему подходит. Но это, естественно, дополнительная нагрузка на сервер. Нужно еще смотреть, какими ресурсами располагает клиент. У нас был огромный зазор по возможностям учитывая реальную нагрузку, поэтому и наструячили.

Офлайн

#7 Март 22, 2014 02:05:34

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

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

Хм, да, может так, в итоге, и придется делать.
Вопрос будет только тогда, если такую рассылку делать массово, чем pdf генерить?

Офлайн

#8 Март 22, 2014 08:25:10

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

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

После опробования разных вариантов мы pdf делаем связкой mako+pdflatex. Причина такого выбора в том, что любой другой опробованный нами способ требует на порядок больше усилий чтобы получить качество документов удовлетворяющее заказчика. Минус этого подхода в том что latex довольно медленная штука. Кроме того нельзя отдавать редактирование шаблонов на сторону пользователя (как и большинстве других технологий). Латех любит в случае ошибки ждать подтверждение от пользователя, что не совсем приятно при работе сервера.
Посмотрите https://pypi.python.org/pypi/xhtml2pdf.

Насколько я знаю есть еще одна проблемка. Всякие организации типа Налоговой, бугалтерий, планово технических отделов, и т.п. жестко требуют чтобы данные предоставлялись в разработанных ими формах. Формы у них зачастую в ворде или екселе. Они их со страшной силой меняют (могут почти каждую неделю). Сделаны они в большинстве случаев так, что в принципе неработоспособны. Например если текста много то он просто не виден при печати и т.д. и т.п. … :(:(:(.
Ну тут или штат девочек надо держать чтобы эти изменения отслеживать, или мутить обратную конвертацию в нормальные форматы и держать штат мальчиков которые будут оживлять этого монстра для конвертации, или послать этих …….(подставьте свое) и не иметь с ними никаких дел. Мы к счастью с такими организациями дел не имеем. :)

Я думаю что это неизбежный эволюционный процесс развития технологий документооборота. И вы по мере сил должны бороться с глупостью в этих технологиях. Предлагайте свои решения заказчику. Отстаивайте их.

Мое мнение:
В большинстве случаев вы отдаете конечный документ. Клиент тогда вообще не имеет право его исправлять. (типа отдаем pdf,ps)
Если надо править - то это не документ, а шаблон документа. Что отдавать зависит от механизма шаблонизации (например отдаем не doc а dot). Наилучший - оставить его у себя на сервере предоставив веб интерфейс для задания данных. На стороне клиента на мой взгляд наилучшим на текущий момент вариантом является pdf с полями ввода.
Если отдаете xls то это уже не документ и не шаблон а алгоритм. И отдавать xls надо только если есть нужда проводить вычисления на стороне клиента. Но тоже не считаю что это хороший выбор вычислительного инструмента.



Отредактировано doza_and (Март 22, 2014 08:49:49)

Офлайн

#9 Март 24, 2014 18:47:59

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

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

Спасибо большое… Правда с этим заказчиком так не получится… Но, в целом, я согласен.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version