Open Stardisk opened 4 years ago
Пришли файл, в котором происходит эта проблема. При необходимости "секретные данные" можешь удалить из него. Попробую разобраться.
Во-первых, файл увеличивается более чем в 2 раза после обработки библиотекой (5 кбайт шаблон, 12 кбайт обработанный, хотя в него вставляется всего пара слов).
Файл может иметь иной размер, потому что он создаётся из Writer-объекта, а не копируется из оригинального файла.
Я искал библиотеку, которая по аналогии с PhpWord может заменять переменные в документе на текст. И наткнулся на твою библиотеку.
Создал простейший файл для проверки твоей библиотеки.
test.xlsx - файл с переменными.
test2.xlsx - выходной файл от твоей библиотеки.
Код я взял из README с небольшими изменениями:
use alhimik1986\PhpExcelTemplator\PhpExcelTemplator; PhpExcelTemplator::saveToFile('./test.xlsx', './test2.xlsx', [ '${test1}' => date('d-m-Y'), '${test2}' => 'English', '${test3}' => 'Русский', '${test4}' => 'Тестирование длинных строк', ]);
test.xlsx
test2.xlsx
И собственно при открытии test2.xlsx в LibreOffice выскакивает ошибка про столбцы.
Это не проблема данной библиотеки, так работает PhpSpreadsheet.
Такое происходит например в случае, когда хотят в исходном файле сделать какое-нибудь действие на все колонки. Например, выравнивание во всех ячейках. В таком случае выделяют все ячейки, указывают настройки.
В результате этого в структуре xlsx сохраняется, что есть максимальная ячейка, для которой надо применить настройки.
Это можно увидеть если распаковать файл .xlsx
, внутри есть файл xl/worksheets/sheet1.xml
.
В файле появится примерно такой узел:
<cols>
<col collapsed="false" customWidth="false" hidden="false" max="1024" min="1" outlineLevel="0" style="1" width="11.56"/>
</cols>
PhpSpreadSheet при чтении документа учитывает атрибут max
, генерит большой документ при сохранении
Варианты решения:
Удаление колонок:
Ctrl+Shift + 🠖
- так мы выделим все колонки до конца документаТакие действия помогали убрать неиспользуемые столбцы из упоминаний в структуре xlsx, PhpSpreadsheet начинал создавать адекватные файлы
Здравствуйте. Во-первых, файл увеличивается более чем в 2 раза после обработки библиотекой (5 кбайт шаблон, 12 кбайт обработанный, хотя в него вставляется всего пара слов).
Во-вторых, при открытии обработанного файла выскакивает следующая ошибка: "Предупреждение при загрузке документа test2.xlsx: Данные не могут быть загружены полностью, т.к. превышено максимальное количество столбцов в листе." Но при этом файл все равно открывается, переменные заменяются, и никаких излишних столбцов нет. Для открытия использую LibreOffice Calc