Экспорт отчета из кода
В генераторе отчетов доступна возможность экспортирования построенного отчета либо дашборда в различные форматы. В таблице ниже перечислены все доступные форматы экспорта для отчетов и дашбордов:
Формат экспорта |
Отчеты |
Дашборды |
Document (Snapshot) |
+ |
+ |
Adobe PDF |
+ |
+ |
XPS (XML Paper Specification) |
+ |
- |
Microsoft PowerPoint |
+ |
- |
HTML |
+ |
+ |
HTML5 |
+ |
- |
Text |
+ |
- |
Microsoft Word |
+ |
- |
Microsoft Excel |
+ |
+ |
OpenDocument Writer |
+ |
- |
OpenDocument Calc |
+ |
- |
RTF (Rich Text Format) |
+ |
- |
Формат данных |
Отчеты |
Дашборды |
CSV (Comma Separated Value) |
+ |
+ |
JSON (JavaScript Object Notation) |
+ |
+ |
XML (Extensible Markup Language) |
+ |
+ |
DBF (dBase/FoxPro) |
+ |
+ |
DIF |
+ |
+ |
SYLK (Symbolic Link) |
+ |
+ |
Формат изображения |
Отчеты |
Дашборды |
PNG (Portable Network Graphics) |
+ |
+ |
JPEG (Joint Photographic Experts Group) |
+ |
+ |
GIF (Graphics Interchange) |
+ |
+ |
TIFF (Tagged Image File Format) |
+ |
+ |
SVG (Scalable Vector Graphics) |
+ |
+ |
SVGZ (Compressed SVG) |
+ |
+ |
PCX (Picture Exchange) |
+ |
+ |
BMP (Windows Bitmap) |
+ |
+ |
Для экспортирования отчета необходимо воспользоваться методом exportDocument() у объекта отчета:
app.py |
from stimulsoft_reports.report import StiReport from stimulsoft_reports.report.enums import StiExportFormat
report = StiReport() report.loadFile(url_for('static', filename='reports/SimpleList.mrt')) report.render() report.exportDocument(StiExportFormat.PDF)
|
Полный код примера доступен на GitHub.
Информация |
Экспортирование отчета не вызывает его автоматическое построение, поэтому для загруженного шаблона отчета требуется предварительно вызвать метод render(), который построит отчет. Для готовых документов (построенных отчетов) вызов указанной функции не требуется.
|
В качестве аргументов функции exportDocument() необходимо указать требуемый формат экспорта из перечисления StiExportFormat, а так же при необходимости настройки экспортирования. Доступны следующие варианты формата:
Формат экспорта |
Описание |
StiExportFormat.DOCUMENT |
Сохранение документа (построенного отчета). |
StiExportFormat.PDF |
Сохранение в Adobe PDF формат. |
StiExportFormat.XPS |
Сохранение в XPS формат. |
StiExportFormat.POWERPOINT |
Сохранение в Microsoft PowerPoint формат. |
StiExportFormat.HTML |
Сохранение в HTML формат. |
StiExportFormat.HTML5 |
Сохранение в HTML5 формат, с использованием элементов SVG разметки. |
StiExportFormat.TEXT |
Сохранение в текстовый формат. |
StiExportFormat.WORD |
Сохранение в Microsoft Word формат. |
StiExportFormat.EXCEL |
Сохранение в Microsoft Excel формат. |
StiExportFormat.ODT |
Сохранение в OpenDocument Text формат. |
StiExportFormat.ODS |
Сохранение в OpenDocument Spreadsheet формат. |
StiExportFormat.RTF |
Сохранение в RichText формат. |
StiExportFormat.CSV |
Сохранение в CSV формат данных. |
StiExportFormat.JSON |
Сохранение в JSON формат данных. |
StiExportFormat.XML |
Сохранение в XML формат данных. |
StiExportFormat.DBF |
Сохранение в DBF формат данных. |
StiExportFormat.DIF |
Сохранение в DIF формат данных. |
StiExportFormat.SYLK |
Сохранение в SYLK формат данных. |
StiExportFormat.IMAGE_PNG |
Сохранение в изображение PNG формата. |
StiExportFormat.IMAGE_JPEG |
Сохранение в изображение JPEG формата. |
StiExportFormat.IMAGE_GIF |
Сохранение в изображение GIF формата. |
StiExportFormat.IMAGE_TIFF |
Сохранение в изображение TIFF формата. |
StiExportFormat.IMAGE_SVG |
Сохранение в изображение SVG формата. |
StiExportFormat.IMAGE_SVGZ |
Сохранение в изображение SVGZ формата. |
StiExportFormat.IMAGE_PCX |
Сохранение в изображение PCX формата. |
StiExportFormat.IMAGE_BMP |
Сохранение в изображение BMP формата. |
После экспорта отчета, полученный поток данных будут передан браузеру на скачивание в виде файла. Имя файла и MIME тип данных будет определен автоматически. Предусмотрена возможность отобразить экспортированный отчет сразу в окне браузера (только для PDF, HTML и изображений), для этого необходимо установить аргумент openAfterExport в значение True:
app.py |
report.exportDocument(StiExportFormat.PDF, openAfterExport = True)
|
Экспортирование отчета на стороне сервера
Для переключения генератора отчетов в режим работы на стороне сервера, необходимо установить свойство отчета engine в значение StiEngineType.SERVER_NODE_JS, весь остальной набор событий и методов для работы с отчетом точно такой же, как и при экспортировании отчета на стороне клиента. При экспорте на стороне сервера, метод exportDocument() вернет байтовый поток данных экспортированного отчета.
Пример экспортирования отчета в PDF формат на стороне сервера:
app.py |
from stimulsoft_reports.report import StiReport from stimulsoft_reports.report.enums import StiEngineType, StiExportFormat
report = StiReport() report.engine = StiEngineType.SERVER_NODE_JS report.loadFile(url_for('static', filename='reports/SimpleList.mrt')) report.render() bytes = report.exportDocument(StiExportFormat.PDF)
|
Полный код примера доступен на GitHub.
Предусмотрена возможность автоматически сохранить экспортированный отчет в виде файла на стороне сервера. Для этого необходимо указать путь сохранения в аргументе filePath метода экспорта. В этом случае, метод exportDocument() вернет булевый результат экспортирования и сохранения файла.
Пример экспортирования отчета в формат PDF на стороне сервера и сохранение результата в указанную директорию:
app.py |
exportedFilePath = url_for('static', filename='reports/SimpleList.pdf') bytes = report.exportDocument(StiExportFormat.PDF, filePath = exportedFilePath)
|
Настройки экспортирования отчета
При экспорте отчета из кода доступна возможность установить необходимые настройки экспортирования. Для каждого формата экспорта предназначен свой класс настроек, указанный в таблице ниже:
Формат экспорта отчета |
Класс настроек |
StiExportFormat.DOCUMENT |
Настройки не предусмотрены. |
StiExportFormat.PDF |
StiPdfExportSettings() |
StiExportFormat.XPS |
StiXpsExportSettings() |
StiExportFormat.POWERPOINT |
StiPowerPointExportSettings() |
StiExportFormat.HTML StiExportFormat.HTML5 |
StiHtmlExportSettings() |
StiExportFormat.TEXT |
StiTxtExportSettings() |
StiExportFormat.WORD |
StiWordExportSettings() |
StiExportFormat.EXCEL |
StiExcelExportSettings() |
StiExportFormat.ODT |
StiOdtExportSettings() |
StiExportFormat.ODS |
StiOdsExportSettings() |
StiExportFormat.RTF |
StiRtfExportSettings() |
StiExportFormat.CSV StiExportFormat.JSON StiExportFormat.XML StiExportFormat.DBF StiExportFormat.DIF StiExportFormat.SYLK |
StiDataExportSettings() |
StiExportFormat.IMAGE_PNG StiExportFormat.IMAGE_JPEG StiExportFormat.IMAGE_GIF StiExportFormat.IMAGE_TIFF StiExportFormat.IMAGE_SVG StiExportFormat.IMAGE_SVGZ StiExportFormat.IMAGE_PCX StiExportFormat.IMAGE_BMP |
StiImageExportSettings() |
Формат экспорта дашборда |
Класс настроек |
StiExportFormat.PDF |
StiPdfDashboardExportSettings() |
StiExportFormat.HTML |
StiHtmlDashboardExportSettings() |
StiExportFormat.EXCEL |
StiExcelDashboardExportSettings() |
StiExportFormat.CSV |
StiDataDashboardExportSettings() |
StiExportFormat.IMAGE_SVG |
StiImageDashboardExportSettings() |
Для применения настроек экспортирования, необходимо передать подготовленный объект настроек в качестве параметра методу экспорта отчета. Все остальные действия будут выполнены автоматически.
Пример экспортирования отчета в формат PDF на стороне сервера, в настройках указываются сведения о компании и разрешается редактирование:
app.py |
from stimulsoft_reports.report import StiReport from stimulsoft_reports.report.enums import StiEngineType, StiExportFormat from stimulsoft_reports.export import StiPdfExportSettings from stimulsoft_reports.export.enums import StiPdfAllowEditable
report = StiReport() report.engine = StiEngineType.SERVER_NODE_JS report.loadFile(url_for('static', filename='reports/SimpleList.mrt')) report.render()
settings = StiPdfExportSettings() settings.creatorString = 'Stimulsoft' settings.allowEditable = StiPdfAllowEditable.YES
bytes = report.exportDocument(StiExportFormat.PDF, settings)
|
Полный код примера доступен на GitHub.
Информация |
Класс объекта настроек экспорта должен соответствовать формату экспорта, в противном случае приоритетным будет считаться формат, возвращаемый методом getExportFormat() объекта настроек экспорта.
|