Какая библиотека для работы с xlsx действительно поддерживает 'перенос по словам'?

Надо создавать файлы Excel программно, с нормальным оформлением. Ясно, что возможно наиболее необходимая опция форматирования - 'перенос по словам', который будет увеличивать высоту строки в зависимости от самой наполненной ячейки в ней. Если этого не сделать, придётся задавать достаточно большую фиксированную высоту, с запасом - на экране будет видно меньше данных, чем можно было бы показать.

В Python я обнаружил, что ни openpyxl, ни xlsxwriter по факту не могут сделать это форматирование, несмотря на то, что для xlsxwriter в доках (set_text_wrap()) приложен скриншот, согласно которому это фича должна работать.

На деле, когда я открываю полученный документ в Microsoft Excel Online (эталон, так ведь?) или в LibreOffice Calc (на компе Arch), переноса нет.
5a686a383ea0b640841958.png

Что интересно, в LibreOffice нужные флаги форматирования стоят. Если просто нажать ОК, документ будет 'изменён', а перенос заработает. Если сохранить эту версию в LibreOffice, то получившийся файл будет работать даже в Excel Online.
5a686b6fbbf46417701826.png

Формат xlsx описан в открытой спецификации Office Open XML, на которой опираются openpyxl и xlsxwriter. Однако, если распокавать вариант, сгенерированный Python, и пересохранённый в LibreOffice, распаковать zip, будет видно, что содержимое разное - отличается как diff, так и просто количество файлов.

Отсюда вопросы:
  • Какой Python-пакет всё-таки будет правильно сохранять 'перенос по словам'?
  • Почему, вроде популярные и отлаженные, openpyxl и xlsxwriter (возможно другие пакеты имеют такую же проблему) имеют такую проблему?
  • Вопрос задан
  • 1585 просмотров
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev Куратор тега Python
software engineer
Потому, что для работы с xlsx обычно используют MS Excel или аналог из OpenOffice, а не пакет из питона.

Основная задача подобных пакетов - конвертация и генерация документов из кучи данных, поэтому форматированию уделяется минимум времени.
Вполне возможно, что подобные фичи вообще не предполагается воплощать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы