Документация доступна на языках:
Совместимые файлы: 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));Пожалуйста, следуйте данному руководству при сообщении о багах и запросе новых фич:
- Используйте GitHub Issues раздел для отчетов об ошибках и запросах на новые фичи (не наш eMail)
- Пожалуйста всегда описывайте шаги воспроизведения ошибки. В таком случае мы сможем сфокусироваться на решении проблемы, не ломая голову в попытках воспроизвести проблему.
Спасибо за понимание!
npm start- Запуск демо из сборки для релиза.npm run start-dev- Запуск демо в режиме разработки.npm run build- Сборка для релиза.
Свободное использование (подробнее Лицензия в полнотекстовом файле)