Ошибка форматирования электронной таблицы lucee: превышено максимальное количество стилей ячеек

Я использую lucee-spreadsheet, отличный инструмент. Я делаю очень большую электронную таблицу (несколько листов в книге с тысячами строк на листе). Все работает как положено. Я заполнил листы данными и создал пустые строки между группами, которые хочет клиент. Теперь я возвращаюсь и пытаюсь применить форматирование, и я сталкиваюсь с ошибкой:

Превышено максимальное количество стилей ячеек. В книге .xls можно определить до 4000 стилей.

Проблема в том, что я пытался применить только один стиль:

spreadsheet.formatColumns(workbook=workbook, format={dataformat="$##,####0.00"},range='5-20');

Есть ряд других стилей, которые мне нужно применить. Я предполагаю, что, поскольку существует более 500 строк и этот стиль применяется к 16 столбцам, стиль фактически форматирует каждую ячейку, а не столбец.

Есть ли другой способ, которым я мог бы или должен применять этот стиль?


person Lance    schedule 13.07.2016    source источник
comment
Спасибо, что сообщили об этом. Я создал тикет и рассмотрю его, как только смогу: github.com /cfsimplicity/lucee-spreadsheet/issues/84   -  person CfSimplicity    schedule 13.07.2016


Ответы (2)


Глядя на исходный код lucee-spreadsheet, formatColumns создает новый стиль ячейки для каждой ячейки, которую он форматирует. К сожалению, это неоптимально, и ограничения Apache POI на стили в электронной таблице достигаются для формата электронной таблицы Excel 97 (HSSF). Было бы лучше использовать formatCellRange, который повторно использует стили ячеек, до тех пор, пока сопровождающие не реализуют лучшую функцию formatColumns, чтобы воспользоваться преимуществами повторного использования стилей.

person Finbarr O'B    schedule 13.07.2016
comment
Я сопровождающий. Спасибо за указание на это. Эта часть кода была унаследована от предыдущего проекта, но я подниму тикет и посмотрю, можно ли его улучшить, как вы предлагаете. Еще раз спасибо. - person CfSimplicity; 13.07.2016
comment
Спасибо вам обоим, я перейду на formatCellRange и поищу обновление от cfSimplecity. - person Lance; 13.07.2016
comment
Все это было исправлено в библиотеке @CfSimplecity. ПОТРЯСАЮЩИЙ инструмент - person Lance; 22.07.2016

Одна вещь, которая может помочь, — это переключение формата вывода с .xls на .xlsx. Используя формат .xls, я видел форматирование только в первых 156 строках моей электронной таблицы. Это было ограничением формата файла .xls. Я использовал spreadsheet.newXlsx() вместо spreadsheet.new() и смог создать файл xlsx, и форматирование отображалось правильно для 750 строк, с которыми я работал.

person TBrenner    schedule 16.04.2018