Надо создавать файлы Excel программно, с нормальным оформлением. Ясно, что возможно наиболее необходимая опция форматирования - 'перенос по словам', который будет увеличивать высоту строки в зависимости от самой наполненной ячейки в ней. Если этого не сделать, придётся задавать достаточно большую фиксированную высоту, с запасом - на экране будет видно меньше данных, чем можно было бы показать.
В Python я обнаружил, что ни
openpyxl, ни
xlsxwriter по факту не могут сделать это форматирование, несмотря на то, что для xlsxwriter в
доках (set_text_wrap()) приложен скриншот, согласно которому это фича должна работать.
На деле, когда я открываю полученный документ в
Microsoft Excel Online (эталон, так ведь?) или в
LibreOffice Calc (на компе Arch), переноса нет.
Что интересно, в
LibreOffice нужные флаги форматирования стоят. Если просто нажать
ОК, документ будет 'изменён', а перенос заработает. Если сохранить эту версию в
LibreOffice, то получившийся файл будет работать даже в
Excel Online.
Формат
xlsx описан в открытой спецификации
Office Open XML, на которой опираются
openpyxl и
xlsxwriter. Однако, если распокавать вариант, сгенерированный Python, и пересохранённый в
LibreOffice, распаковать
zip, будет видно, что содержимое разное - отличается как
diff, так и просто количество файлов.
Отсюда
вопросы:
- Какой Python-пакет всё-таки будет правильно сохранять 'перенос по словам'?
- Почему, вроде популярные и отлаженные, openpyxl и xlsxwriter (возможно другие пакеты имеют такую же проблему) имеют такую проблему?