Генератор документов docx и xlsx

в 22:41, , рубрики: Песочница, метки: , ,

image

Год назад ко мне в очередной раз обратился постоянный заказчик. «Менеджеры — идиоты, — негодовал он. — Текучка кадров огромная, на обучение каждого уходят месяцы. А потом они делают ошибки».

Лишь после такой эмоциональной прелюдии последовало задание: «Необходимо, чтоб при заказе с сайта на почту приходил уже сформированный пакет документов в форматах MS Office: бланк заказа, счет к оплате, товарный чек, и спецификация».

Задача сама по себе близка к статье «PHP + Word». Но сервис LiveDocx нам не подошел. Во-первых, предполагалось, что большая часть документов должна быть в Excel. Во-вторых, оплата «на Запад» из России была и есть проблематичной. В-третьих, у заказчика была масса идей и хотелок, которые этот, или подобный сервис вряд ли реализовал бы. Например, сложную таблицу, с разбивкой товаров на категории.

Так как сайтов у заказчика несколько, решено было строить отдельную систему — свой собственный сервис генерации документов, к которому сайты обращались бы в момент заказа.

В основу будущего кода легли идеи из той же, приведенной выше, хабростатьи, а так же публикация «Разбираем xlsx в PHP без готовых библиотек».

В итоге за месяц работы «генератор документов» был создан и запущен.

Что он умеет:

  • генерировать по шаблону документ docx путем прямой замены шаблонного тега на данные;
  • то же самое делать с шаблонами в формате xlsx;
  • расширять таблицы в xlsx и заполнять их входящими данными из массива;
  • вставлять подзаголовки, разбивая таблицу на группы;
  • вставлять ссылки — единичные, или как содержимое таблицы;

Что генератор на данный момент не умеет:

  • работать с разными типами данных — все ячейки заполняются как строки. По этой причине невозможно использование формул excel в шаблоне, которые оперировали бы введенными данными;
  • вставлять изображения;
  • менять форматирование — оно полностью определяется в шаблоне.

В таком виде он проработал вот уже скоро год. Проблемы за этот период возникали в основном только с клиентской частью — со стороны магазина. Хотя, это не значит, что скрипт «генератора» идеален. На сегодняшний день он обкатан только в одной реальной задаче.

Вскоре возникла мысль, что этот продукт может мыть полезен и другим людям. Так был зарегистрирован новый домен, на него установлена копия генератора документов и создан небольшой сайт, на котором можно «пощупать» работу скрипта, залить свой шаблон и эксплуатировать до тех пор, пока выдержит железо.

Сегодня я получила разрешение от заказчика выложить проект на Гитхабе и опубликовать эту статью, чем спешу воспользоваться.

Проверить работу скрипта можно на демо-примере.

Исходный код доступен в репозитории.

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js