Falcon Space. Генерация документов Docx и Xlsx
Компонент Выгрузка документов позволяет создать некий шаблон Excel или Word, вставить в него параметры вида {tableN.colName} и затем по кнопке генерировать файлы из шаблона.
Выполняется некий запрос (возращающих несколько SELECT), эти данные передаются в обработчик, которые подставит их в файл-шаблон и выдаст ссылку на новый файл пользователю.
Т.е. задача разработчика заключается в следующем:
- подготовить SQL запрос извлечения данных,
- подготовить шаблон файла с параметрами, соответствующими данным из запроса.
Пример выгрузки документов Excel и Word
Компонент позволяет сформировать документ Word или Excel на основе документа-шаблона со вставкой в него данных из хранимой процедуры.
Сниппет
<a href="#" class="as-doc" data-code="code" data-itemid="123" title="Генерация документа Акта"><i class="fa fa-file-text"></i></a><i class="fa fa-file-text">
<!--При нажатии на ссылку формируется документ и выдается ссылка на скачивание.--></i>
Должен быть создан элемент Документа в БД (раздел Выгрузка документов) с элементами:
- Код - является частью названия хранимой процедуры извлечения данных, а также названием шаблона документа.
- Название - участвует в формировании названия выходного файла
- Тип - Word или Excel
- Роли - какие роли имеют доступ к документу.
Далее создаем хранимую процедуру с именем doc_{code}_getData, которая возвращает наборы данных (несколько select).
ALTER PROCEDURE [dbo].[doc_testWord_getData]
@username nvarchar(64),
@itemID int,
@urlParameters CRUDFilterParameter READONLY
AS
BEGIN
select 1 Result, '' msg, '8000' TableWidth, '2500,1000,3500' ColWidths, '999999' TableHeaderBackColor, 'Акт-{g}' FileName
select 'ИП Федоров А.И.' customer, '241' docNum, '10 ноября 2019г.' date,
'Договор №3 от 01 ноября 2019г.' parentDoc,
'550 (пятьсот пятьдесят) рублей' propis,
'Индивидуальный предприниматель' customerPost,
'Федоров Алексей Иванович' customerFIO,
'2019' year
select 'Покраска стен' as 'Работы', 12 as 'Метры', 250 as 'Стоимость'
union
select 'Укладка ламината',20, 300
END
ВАЖНО. Файлы шаблонов должны быть именно в docx и xlsx (а не doc и xls).
Описание параметров SELECT 1:
1. TableWidth (только для word) - ширина таблиц в документе Word (по умолчанию 9600).
2. ColWidths (только для word) - ширины столбцов таблицы через запятую (по умолчанию ширина столбца в таблице 2000)
3. TableHeaderBackColor (только для word) - цвет шапки таблицы (по умолчанию f9f9f9).
4. FileName - название выходного файла (с использованием латинских букв!). может содержать дополнительные псевдопараметры: {g} - вставка 4 символов guid, {date} - вставка даты. Если имя не указано, то оно будет таким {code}-{g}.xlsx
5. ShowTableHeader (только для Excel) - если 1, то показывается таблица добавляется вместе с заголовком.
В шаблоне используем следующие поля для вставки данных:
-
{table2} - вставить целиком вторую таблицу (второй select).
-
{table2.title} - вставить значение колонки title из 1 строки второго набора (SELECT 2). (также можно {table1.title.text})
- {table2.code1.img} - вывести картинку
- {table2.code1.ul} и {table2.code1.ol} - вывести ненумернованный и нумерованный список (при этом в поле SQL значения будут перечислены через ||).
Пример Xlsx: S
{step1} |
{table1.total} |
C1 |
D1 |
A2 |
B2 |
C2 |
D2 |
A3 |
{table2} |
C3 |
D3 |
A4 |
B4 |
C4 |
D4 |
A5 |
B5 |
C5 |
D5 |
A6 |
B6 |
{table1} |
D6 |
A7 |
B7 |
C7 |
D7 |
Примечание
- Для шаблона Docx любые коды вставлять только через буфер обмена из блокнота (и не редактировать в Word). Это связано с особенностью хранения в Word структуры XML в виде P, run и text тегов. Для таблиц ({table1}) - обязательно только один элемент должен быть в строке (без дополнительного текста). Если где то не срабатывает шаблон - попробуйте вставить полный кусок текста с параметрами прямо из блокнота
- При генерации документов сохраняется лог, кто, когда создавал файлы с ссылкой на сформированный файл.
- Генерируемые файлы находятся по адресу /uploads/doc/{code} + в название добавляется суффикс miniGuid.
- Если необходимо проверить более детально права на формируемый документ - это можно сделать прямо в хранимой процедуре GetData на основе username и itemID.
- Также вы можете генерировать документы через Внешнее действие generatedoc (при этом дополнительные данные передаются в в GetData процедуру через параметр ExtendedDictionaryParameter @parameters). См. подробнее про Внешние действия.
- Выходные данные из SELECT лучше сразу приводить к строке в явном виде и обрабатывайте ситуацию с null (через isnull).
Примеры работы компонентов платформы Falcon Space
Примеры удобных таблиц и форм Примеры дашборда Примеры графиков и диаграмм Пример календаря Таблица с данными по API Пример вывода карты с точками Виды полей форм Пример виджета статистики Пример дерева иерархии Пример компонента Временная линия Пример карточки товаров Пример учета загрузки ресурса Пример Канбан доски Пример мастер формы Пример выгрузки документов Excel/Word Пример заполнения данных по ИНН- Руководства
- Основа Falcon Space
- Основные компоненты Falcon Space. Работа с таблицами Falcon Space. Работа с формами Falcon Space. Работа с дашбордами Falcon Space. Работа с ресурсами Falcon Space. Работа со статусами Falcon Space. Бизнес-процессы Falcon Space. Генерация документов Docx и Xlsx Falcon Space. Работа с деревьями (иерархия) Работа с HTML блоками Внешние действия (уведомления, пуш, email, вызов API) Диаграммы и графики Интерактивное дерево Диаграмма Ганта Доска Канбан Диаграмма Chartbar Карта с маркерами Карточки Полоски прогресса Временная линия (timeline) Календарь
- Возможности Falcon Space
- Подсистемы
- Дополнительные компоненты
- Интеграции
- HOWTO
- HOWTO Таблицы
- HOWTO Формы
- HOWTO JS
- HOWTO CSS
- HOWTO Верстка
- Решение проблем
Платформа Falcon Space
Это снижение стоимости владения
за счет меньшего количества людей для поддержки
Это быстрое внесение изменений
по ходу эксплуатации программы
Это современный интерфейс
полная адаптация под мобильные устройства
Бесплатное обучение разработке на Falcon Space
