Comments 28
Полезная наработка!

Сможете отделить библиотеку генерации документа от сайта (index.php) и завернуть её в composer пакет?
На гитхабе лежит как раз отдельно только то, что связано с генерацией. Пока ничего, кроме исправления возможных багов, делать не планирую.
Так же писал в свое время подобный генератор отчетов в xlsx и так же оформление и прочее были зашиты в шаблон, но потом узнал про xslt и все встало на свои места. Теперь, код отдельно, оформление отдельно и в любой момент можно поправить шаблон. Чего и Вам желаю.
Зависит от задачи. В моем случае, например, трудно заставить клиентов осваивать xslt или платить за постоянную корректировку шаблонов по их хотелкам.
Давно, когда надо было написать подобную вещь…
Я формировал документ в формате xml с тегами и заголовками (как их сохранял Excel), а потом при скачивании кидал в header соответствующий content-type (application/vnd.ms-excel) и все.
Это позволяло не мучиться с внутренней структурой xlsx файла
нисколько не критикую, просто интересуюсь — а Google Spreadsheet/Document не рассматривались в качестве альтернативы? Хоть многие excel фичи там отсутствуют, но благодаря google apps script есть очень широкие возможности автоматизации. Генерацию по шаблону там можно сделать за считанные часы (с нуля, достаточно знать javascript). Если конечно, речь не идёт о сотнях документов в день (т.к. есть квоты и ограничения)
Был реальный заказчик. Ему нужна была реализация именно в том виде, как есть. Гуглдокс как раз в первую очередь был предложен, но у фирмы уже был налаженный документооборот, и требовалось вписаться в существующую систему.
Среди разных вариантов ответа, рискну остановиться на следующем: чтоб получить инвайт на хабр. Можно так?
На самом деле, конечно, мысли об этом 13 месяцев назад не было, были другие, которые уже сложно вспомнить так, чтоб не соврать.
как реализована подстановка переменных в документе? как обрамлять переменные?
Как обрамлять переменные.

На счет реализации, я не уверенна, что поняла ваш вопрос на 100% правильно. Каждый вид переменных обрабатывается разным способом. Одиночные — прямой заменой всех вхождений на значение, табличные — создаются новые ячейки, по количеству входящих элементов, и уже в них производится замена на значения из массива.
переменные имею ввиду типа %firm_name% вставленные в шаблон docx, которые потом заменяются на значения. Причем вставленны именно в ворде не в xml. Как у вас это работает?
но в xml переменные могут не храниться в строчку. Если вы ошибетесь в написани переменной и исправите ошибку, она будет разбита тегом history и обычной заменой в xml уже не прокатит.
В моём случае я решал это покороче, сначала грохал все теги между требуемыми ключевыми символами регуляркой, а после — обычной заменой.
Перестановка мест слагаемых. Хотя, возможно, имеет смысл для оптимизации, но это не очевидно — нужны экперименты. Ну а мой выбор обоснован тем, что такой подход показался более контролируемым, чем «грохать все регуляркой».
UFO landed and left these words here
UFO landed and left these words here
UFO landed and left these words here
Спасибо за ваше мнение. Постараюсь учесть. Но чем табы не угодили?
UFO landed and left these words here
UFO landed and left these words here
Ну конечно, именно 15 минут пишется понятная документация, ни минутой больше.
Only those users with full accounts are able to leave comments. Log in, please.