xlsx-template-ex-buffer
v0.2.11
Published
The template engine for generate xlsx documents
Readme
Excel шаблонизатор
Description
Этот пакет расширяет функциональность другой библиотеки, позволяя получать шаблон типа Buffer Original Library: https://github.com/optimistex/xlsx-template-ex
Документация доступна на языках:
Совместимые файлы: xlsx
Данный компонент реализует создание отчетов на основе шаблона. Он имеет гибкий синтаксис, подобный шаблонным выражениям в Angular.
Синтаксис
Поддерживаются 2 типа выражений:
- Вывод значения:
{{value|pipe:arg1:argN}} - Вывод массива:
[[value|pipe:arg1:argN]]
Где:
value- имя свйства которое содержит некоторое значение или массивpipe- некоторая функция дополнительной обработки значенияarg1,argN- аргументы/параметры передаваемые в функцию
Реализованные варианты выражений
{{propertyName}}- вывод значения как есть{{propertyName|date}}- выводимое значение будет отформатировано как дата{{fileName|image}}- поиск файла изображения по имени файла. Если изображение найдено, то оно встраивается в ячейку таблицы.{{propertyArrayName|find:propertyName:propertyValue}}- поиск значения в массивеpropertyArrayNameкоторый содержит свойствоpropertyNameравноеpropertyValue{{propertyObjectName|get:propertyName}}- возвращает значение свойстваpropertyArrayNameобъектаpropertyObjectName[[array|repeat-rows:3]]- обработка массива значений и вывод содержимого в секцию из 3 строк начиная с текущей. Строки будут продублированы в соответствии с размером массива.[[array|filter:propertyName:checkValue]]- фильтр массива. Если предоставлено толькоpropertyName, тогда получим массив объектов содержащих это свойство. Если предоставленоpropertyNameиcheckValue, тогда получим массив объектов которые содержат свойствоpropertyNameсо значениемcheckValue.[[array|tile:blockRows:blockColumns:tileColumns]]- обработка массива значений и вывод по блокам. Исходный блок определяется поblockRowsиblockColumns. Данный блок будет выведен в таблице изtileColumnsколонок.
Примеры
Будем выводить такие данные:
let data = {
reportBuildDate: 1526443275041,
results: [
{ text: 'some text 1', answerText: 'a text of an answer 1'},
{ text: 'some text 2', answerText: 'a text of an answer 2'},
{ text: 'some text 3', answerText: 'a text of an answer 3'},
{ answerText: 'a text of an answer 3'},
],
};Давайте сделаем шаблон:
!!! В данном примере / использовано вместо | из-за проблемы с синтаксисом Markdown
| A | B | |---|---| |{{reportBuildDate/date}}| {{results/find:text:some text 2/get:answerText}} | |[[results/filter:text/repeat-rows:1]] {{text}}| {{answerText}} | | | | | [[results/filter:text/tile:1:1:2]]{{answerText}} | |
Получим результат:
| A | B | |-------|-------| | 16.05.2018 | a text of an answer 2 | | some text 1 | a text of an answer 1 | | some text 2 | a text of an answer 2 | | some text 3 | a text of an answer 3 | | | | | a text of an answer 1 | a text of an answer 2 | | a text of an answer 3 | |
Начало работы
const fs = require("fs");
const XlsxTemplate = require('xlsx-template-ex');
const data = {
reportBuildDate: 1526443275041,
results: [
{ text: 'some text 1', answerText: 'a text of an answer 1'},
{ text: 'some text 2', answerText: 'a text of an answer 2'},
{ text: 'some text 3', answerText: 'a text of an answer 3'},
{ answerText: 'a text of an answer 3'},
],
};
XlsxTemplate.xlsxBuildByTemplate(data, 'template-file.xlsx')
.then((buffer) => fs.writeFileSync('./out.xlsx', buffer))
.catch((error) => console.log('xlsxHelper error:', error));Поддержка
npm start- Запуск демо из сборки для релиза.npm run start-dev- Запуск демо в режиме разработки.npm run build- Сборка для релиза.
Лицензия
Свободное использование (подробнее Лицензия в полнотекстовом файле)
