Pull to refresh

Comments 15

Есть интерес к генерации XLSX, на сколько у вас проработана работа с графиками? Сейчас некоторые моменты нельзя сделать PHPExcel.
XLSX только в планах.
Несколько месяцев назад передо мной стояла задача формирования реестров операций в формате xlsx. На первой итерации была использована библиотека PHPExcel, но после проверки полученного решения на прогнозируемых объёмах (120 тыс. операций) от использования PHPExcel пришлось отказаться.

Библиотеку PHPExcel можно использовать лишь для небольших шаблонов. При значительном увеличении количества строк начинает проседать производительность (время заполнения шаблона начинает измеряться минутами) и памяти начинает резко не хватать (уже на 10 тыс. операций мы получили превышение 128 Мб).

Согласно требованиям к разрабатываемому ПО в реестре могло быть около 100-200 тыс. операций, поэтому пришлось реализовывать свой шаблонизатор под конкретные задачи с минимальным потреблением памяти. Полученное решение тестировани на 1 млн. операций. Потребление памяти не зависит от количества строк (строки сразу пишутся в файл), производительность существенно выше (если правильно помню, тофайл на 1 млн. строк формировался за пару минут).

Поэтому если будете реализовывать свой генератор xlsx-файлов и хотите избежать проблем с памятью и производительностью, то лучше отказаться от хранения всех данных в памяти при заполнении шаблона и, как следствие, не использовать XSLT.
А поделитесь-ка пожалуйста, если это не сверх секретно)
А есть отчет по скорости?
Делал экспорт прайслиста с помощью PHPword через шаблоны — документ из 50 строк таблицы создавался 2 минуты!
O_o

И можно ли вставлять в шаблон картинки?
Уверен что сильно быстрее, о производительности даже не задумывался так как после генерации шаблона на XSL трудно повлиять.
Думаю возможность вставлять картинки будет в ближайшем времени, для полной работы только ее и не хватает.
Основную проблему представляют разбитые на отрывки (они же «run», представлены нодами <w:r/>) параграфы, содержимое Тэгов разбивается на несколько нод и в таком виде их обработать не получится.


и все-таки вариант есть :) — через RTF формат. Сам делал шаблонизатор через WORD. Вот пример шаблона для вывода 2-х таблиц:
image

Если интересно — пишите, с удовольствием поделюсь идеей…

Вспомнил свою древнейшую статью, за которую когда-то получил инвайт.
Правда из-за ее примитивности и устарения информации в ней, давно скрыл в черновики. (восстановил, если кому будет интересно о чем речь)
Спасибо за возраждение идеи!
Интересный подход (в своём велосипеде «переменные» обрабатывал сразу после нахождения), но, ИМХО, для практического использования не хватает условий (при их реализации начинается самое интересное :))
gist.github.com/ya-est/e741bec6db04b22ddddd

В своем время написал свой «велосипед» для генерации DOCx в 100 строчек (вместе с комментариями и возможностью расширения для «особых нужд»). Проблем никаких не было.

Принцип работы:
Открыть docx как архив, заменить текст регуляркой в файле word/document.xml, обновить файл и создать новый архив.
UFO just landed and posted this here
Sign up to leave a comment.

Articles

Change theme settings