快速学会使用FastReport VCL从Delphi / Lazarus将报表导出到Excel XML

报表生成器FastReport VCL是用于在软件中集成商务智能的现代解决方案。它提供了可视化模板设计器,可以访问最受欢迎的数据源,报告引擎,预览,将过滤器导出为30多种格式,并可以部署到云,Web,电子邮件和打印中。

近日,FastReport VCL更新至v6.7,在新版本中,添加了对最新版本IDE的支持,简化了用于付款标准的条形码的创建,新增从预览窗口直接编辑RichView的功能,同时修复了多个Bug问题。欢迎下载体验。(点击下载)

XML是一项旨在管理结构化数据并将该数据显示为人类可读的文本文件的技术。XML符合行业标准,可以被许多数据库和应用程序处理。使用XML,许多开发人员可以创建自己的自定义标签,数据结构和架构。通常,XML极大地促进了各种数据库,应用程序和组织中数据的定义,传输,验证和解释。

但是,如果微软传统上不尝试制作“拥有二十一点和单元的自己的XML”,那微软就不会成为自己。因此,Excel实际上不是使用一种(!)XML标准来存储Excel电子表格,而是一种(较旧的和更正确的)XML标准。

正如多次提到的,FastReport允许以各种格式保存来自Delphi和Lazarus的文档、报告和数据。唯一想指出的是,我们需要观察对象的对齐方式,以便生成的电子表格具有吸引力和质量。因此,Fastreport为Excel XML提供了两个不同的(!)导出过滤器。

快速学会使用FastReport VCL从Delphi / Lazarus将报表导出到Excel XML_第1张图片

很明显,程序员从来不会做任何“仅仅因为他想做”的事情——用户才是真正想做什么的人。那么,从用户的角度来看,当他想从应用程序获得Excel电子表格时,这两种格式有什么不同呢?

对于用户来说,这种差异与没有任何图片的rtf和成熟的MS Word文档之间的差异大致相同——第一个差异在现实生活中很少出现。在一个简单的XML文件中没有样式或图片—只有一个XML表。

FastReport工具可帮助选择将文档的哪些页面发送到Excel,某些页面或范围。 导出设置:与原始版本(WYSIWYG)更好的视觉对应,分页符和跳过页眉和页脚的连续文档。

结果:不要拆分,使用报告页面,在父级上使用打印-报告模板中的每个TrfxReportPage都对应于该书的一张纸(假设TfrxReportPage.PrintOnParent = False)或按特殊数量拆分行。导出后打开:导出后,Microsoft Excel将立即打开结果文件(或由与XLSX文件关联的任何其他软件)打开。

快速学会使用FastReport VCL从Delphi / Lazarus将报表导出到Excel XML_第2张图片

可以将生成的XML / XLSX保存为本地存储中带有.xml扩展名的文件,发送到FTP,通过电子邮件发送或上传到其中一个云存储(Dropbox,OneDrive,Box.com,GoogleDrive)。

比较生成的XLSX和Excel XML文件

快速学会使用FastReport VCL从Delphi / Lazarus将报表导出到Excel XML_第3张图片快速学会使用FastReport VCL从Delphi / Lazarus将报表导出到Excel XML_第4张图片

第一个屏幕截图是保存为XLSX格式的结果,并且我们可以看到,该格式不支持比纯文本更复杂的数据。但是第二张屏幕截图向我们展示了XML格式的所有可能性,例如完全支持图像和条形码。说到文件的重量,结果是可以预料的:XLSX-48,0kB,XML-40,0kB。

快速学会使用FastReport VCL从Delphi / Lazarus将报表导出到Excel XML_第5张图片

让我们进一步了解为什么XLSX比XML更重要。这些美丽的鱼被作为基础。这份文件包含了大量的文本、表格数据和30张照片。为了更清楚地说明问题,让我们将其与未老化的Excel 97进行比较,我们在另一篇文章中讨论过它。

快速学会使用FastReport VCL从Delphi / Lazarus将报表导出到Excel XML_第6张图片

快速学会使用FastReport VCL从Delphi / Lazarus将报表导出到Excel XML_第7张图片

Excel 97 –它是二进制格式(biff8),没有任何压缩,因此文件很大。与后来的XML格式不同,Excel 97支持各种图像。Excel table(XML)– XLSX的早期版本,其中的数据存储为简单,单个,整体的XML文件,与OOXML和MS Office传统二进制格式相比,它们非常大。

Excel 97 –它是二进制格式(biff8),没有任何压缩,因此文件很大。与后来的XML格式不同,Excel 97支持各种图像。Excel table(XML)– XLSX的早期版本,其中的数据存储为简单,单个,整体的XML文件,与OOXML和MS Office传统二进制格式相比,它们非常大。

XLSX Excel 2007格式的有限功能和可能的限制

列数从256增加到16 384,工作表中的行数从65 536增加到1,048576。由于Excel 2007支持多个处理器和多线程芯片组,因此具有许多公式的大工作表计算得以加速。

如何直接从Delphi / Lazarus中保存到XLSX和XML Excel中

导出到XML

procedure TForm1.Button1Click(Sender: TObject);
begin
 {Generate a report. The report must be generated before exporting}
 frxReport1.PrepareReport();
 {Set the range of pages to export. By default, all pages of the generated report are exported}
 frxXMLExport1.PageNumbers := '2-3';
 {Set whether to generate a continuous document which skips headers and footers.
  Enabling this option disables TfrxXMLExport.ExportPageBreaks}
 frxXMLExport1.SuppressPageHeadersFooters := True;
 {Set whether to export the page breaks within the sheet of the book so that when printing the pages correspond to the pages of the generated report}
 frxXMLExport1.ExportPageBreaks := True;
 {Set WYSIWYG}
 frxXMLExport1.Wysiwyg := True;
 {Set the document splitting order using Split property which can take the following values:
  ssNotSplit – create a continuous document;
  ssRPages – each sheet of the generated report corresponds to the sheet of the book;
  ssPrintOnPrev – each sheet of TfrxReportPage in the report template corresponds to a sheet of the book (provided that TfrxReportPage.PrintOnParent = False);
  ssRowsCount - each sheet will have the number of rows specified in the TfrxXMLExport.RowsCount property.}
 frxXMLExport1.Split := ssNotSplit;
 {Set whether to open the resulting file after export}
 frxXMLExport1.OpenAfterExport := False;
 {Set whether to display export progress
  (show which page is currently being exported)}
 frxXMLExport1.ShowProgress := False;
 {Set whether to display a dialog box with export filter settings}
 frxXMLExport1.ShowDialog := False;
 {Set the name of the resulting file.}
 {Please note that if you do not set the file name and disable the export filter dialog box,}
 {the file name selection dialog will still be displayed}
 frxXMLExport1.FileName := 'C:\Output\test.xls';
 {Export the report}
 frxReport1.Export(frxXMLExport1);
end;

导出到XLSX

procedure TForm1.Button2Click(Sender: TObject);
begin
 {Generate a report. The report must be generated before exporting}
 frxReport1.PrepareReport();
 {Set the range of pages to export. By default, all pages of the generated report are exported}
 frxXLSXExport1.PageNumbers := '2-3';
 {Set whether to generate a continuous document which skips empty rows, headers and footers (with EmptyLines = False).
  With EmptyLines = True the report will be exported as it was generated. Without skipping the empty rows, headers and footers.
  Enabling this option disables TfrxXLSXExport.SuppressPageHeadersFooters and vice versa)
  frxXLSXExport1.EmptyLines := True;
  {Set whether to export the page breaks within the sheet of the book so that when printing the pages correspond to the pages of the generated report}
 frxXLSXExport1.ExportPageBreaks := True;
 {Set WYSIWYG}
 frxXLSXExport1.Wysiwyg := True;
 {Set whether to export only the content of data bands}
 frxXLSXExport1.DataOnly := False;
 {Set the document splitting order:
  with the SingleSheet option on, all pages of the document will be located on one sheet
  frxXLSXExport1.SingleSheet := True;
  If you set the value to ChunkSize, each sheet will have a specified number of rows.
  In this case SingleSheet should be set to False
  frxXLSXExport1.ChunkSize := 50;
  We will set the default order when each sheet of the generated report corresponds to a sheet of the book}
 frxXLSXExport1.SingleSheet := False;
 frxXLSXExport1.ChunkSize := 0;
 {Set whether to open the resulting file after export}
 frxXLSXExport1.OpenAfterExport := False;
 {Set whether to display export progress
  (show which page is currently being exported)}
 frxXLSXExport1.ShowProgress := False;
 {Set whether to display a dialog box with export filter settings}
 frxXLSXExport1.ShowDialog := False;
 {Set the name of the resulting file.}
 {Please note that if you do not set the file name and disable the export filter dialog box,}
 {the file name selection dialog will still be displayed}
 frxXLSXExport1.FileName := 'C:\Output\test.xlsx';
 {Export the report}
 frxReport1.Export(frxXLSXExport1);
end;

如果您有任何疑问或需求,请随时加入FastReport技术交流群(783996712),我们很高兴为您提供查询和咨询。

你可能感兴趣的:(报表生成,报表开发,报表生成,fastreport)