Skip to content

Export to Excel

Dmitriy Popov edited this page Dec 25, 2020 · 10 revisions

Связанная задача — https://github.com/dmitry-weirdo/kgparser/issues/20

Неочевидные проблемы экспорта в Excel

❗ Проблемы относятся главным образом в MS Excel for Windows. Даже в MS Excel for Mac они не проявляются, а тем более в Google Sheets.

Ограничение по числу стилей в Apache POI

Нельзя назначать свой стиль для любого числа ячеек. POI выбрасывает исключение:

Caused by: java.lang.IllegalStateException: The maximum number of Cell Styles was exceeded. You can define up to 64000 style in a .xlsx Workbook

На самом деле, это ограничение Excel — см. https://docs.microsoft.com/en-us/office/troubleshoot/excel/too-many-different-cell-formats-in-excel

Решение:

  • предсоздать все необходимые стили, в каждой ячейке доставить их из мэпы в контексте, а не создавать заново для каждой ячейки — реализовано в ExcelStylesMap.
  • нужны стили для чётных и нечётных рядов (разные background color). — именно так, для всех стилей, кроме заголовков, существует две версии, различающиеся backgroundColor — для чётных и нечётных рядов.
  • надеюсь, это заодно и снизит размер сгенерированного файла. — да, размер файла действительно уменьшается на несколко процентов.

Зипование xlsx файлов

Для снижения трафика скачка со страницы ведёт на zip-файлы, содержащие сгенерированные xlsx. Сжатие получается незначительным, размер файла уменьшается примерно меньше, чем на 9 процентов.