`

报表开发导出各种格式文件的API

阅读更多

文件输出的多样性,准确性和稳定性对于我们常用的报表软件来说很重要。报表的输入是指从报表的模板文件(XML格式的)创建WorkBook对象,输出则指将报表保存为各种格式文件,比如Pdf、Excel、Word这种常见的文件格式,比如FineReport还支持cpt、Svg、Csv、Image(包含png、 jpg、gif、 bmp、wbmp)等多种文件格式。

         因为常常会碰到报表的开发工作,这里总结了几种格式文件导出的API。

1、导出成内置数据集模板

导出成内置数据集模板,就是将原模板的数据源根据参数条件查询出结果并转为内置数据集,然后把模板导出,不需要对原模板进行计算(数据列扩展、公式计算等)。

 

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. // 将未执行模板工作薄导出为内置数据集模板  
  2.             outputStream = new FileOutputStream(new File("E:\\EmbExport.cpt"));  
  3.             EmbeddedTableDataExporter templateExporter = new EmbeddedTableDataExporter();  
  4.             templateExporter.export(outputStream, workbook);  

 

 

2、导出模板文件

我们可以将原模板通过程序编辑后再次导出为模板文件,或者将某一路径下的模板保存至另一路径下。

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. // 将模板工作薄导出模板文件,在导出前您可以编辑导入的模板工作薄,可参考报表调用章节  
  2.             outputStream = new FileOutputStream(new File("E:\\TmpExport.cpt"));  
  3.             ((WorkBook) workbook).export(outputStream);  

 

3、导出Excel文件

模板工作薄WorkBook执行后为结果工作薄ResultWorkBook,我们可以把计算后的结果导出成Excel文件。

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. // 将结果工作薄导出为Excel文件  
  2.             outputStream = new FileOutputStream(new File("E:\\ExcelExport.xls"));  
  3.             ExcelExporter ExcelExport = new ExcelExporter();  
  4.             ExcelExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));  

 

4、导出Word文件

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. // 将结果工作薄导出为Word文件  
  2.             outputStream = new FileOutputStream(new File("E:\\WordExport.doc"));  
  3.             WordExporter WordExport = new WordExporter();  
  4.             WordExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));  

5、导出Pdf文件

 

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. // 将结果工作薄导出为Pdf文件  
  2.                             outputStream = new FileOutputStream(newFile("E:\\PdfExport.pdf"));  
  3.                             PDFExporter PdfExport = newPDFExporter();  
  4.                             PdfExport.export(outputStream,workbook.execute(parameterMap,new WriteActor()));  

 

6、导出Txt文件

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. // 将结果工作薄导出为Txt文件(txt文件本身不支持表格、图表等,被导出模板一般为明细表)  
  2.             outputStream = new FileOutputStream(new File("E:\\TxtExport.txt"));<pre code_snippet_id="1709587" snippet_file_name="blog_20160606_6_1825679" name="code" class="java"></pre>  

7、导出Csv文件

 

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. // 将结果工作薄导出为Csv文件  
  2.             outputStream = new FileOutputStream(new File("E:\\CsvExport.csv"));  
  3.             CSVExporter CsvExport = new CSVExporter();  
  4.             CsvExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));  

 

8、导出Svg文件

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. //将结果工作薄导出为SVG文件    
  2.             outputStream = new FileOutputStream(new File("D:\\SvgExport.svg"));    
  3.             SVGExporter SvgExport = new SVGExporter();    
  4.             SvgExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));  

9、导出Image文件

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. //将结果工作薄导出为image文件    
  2.             outputStream = new FileOutputStream(new File("D:\\PngExport.png"));    
  3.             ImageExporter ImageExport = new ImageExporter();    
  4.             ImageExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));  

10、释放进程

通过导出API在后台导出excel等文件,会产生很多进程,通过下面的方案释放进程。在导出完成之后添加下面代码:

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. outputStream.close();  
  2. ModuleContext.stopModules();  

例如,一个完整的可执行代码:

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. package com.fr.io;    
  2.     
  3. import java.io.File;    
  4. import java.io.FileOutputStream;    
  5. import com.fr.base.FRContext;   
  6. import com.fr.general.ModuleContext;  
  7. import com.fr.base.Parameter;  
  8. import com.fr.dav.LocalEnv;  
  9. import com.fr.io.exporter.CSVExporter;  
  10. import com.fr.io.exporter.EmbeddedTableDataExporter;  
  11. import com.fr.io.exporter.Excel2007Exporter;  
  12. import com.fr.io.exporter.ExcelExporter;  
  13. import com.fr.io.exporter.PDFExporter;  
  14. import com.fr.io.exporter.TextExporter;  
  15. import com.fr.io.exporter.WordExporter;  
  16. import com.fr.io.exporter.SVGExporter;  
  17. import com.fr.io.exporter.ImageExporter;  
  18. import com.fr.main.impl.WorkBook;  
  19. import com.fr.main.workbook.ResultWorkBook;  
  20. import com.fr.report.module.EngineModule;  
  21. import com.fr.stable.WriteActor;  
  22.   
  23.     
  24. public class ExportApi {    
  25.     public static void main(String[] args) {    
  26.         // 定义报表运行环境,才能执行报表    
  27.         String envpath = "D:\\FineReport_8.0\\WebReport\\WEB-INF";    
  28.         FRContext.setCurrentEnv(new LocalEnv(envpath));    
  29.         ModuleContext.startModule(EngineModule.class.getName());   
  30.         ResultWorkBook rworkbook = null;    
  31.         try {    
  32.             // 未执行模板工作薄    
  33.             WorkBook workbook = (WorkBook) TemplateWorkBookIO    
  34.                     .readTemplateWorkBook(FRContext.getCurrentEnv(),    
  35.                             "\\doc\\Primary\\Parameter\\Parameter.cpt");    
  36.             // 获取报表参数并设置值,导出内置数据集时数据集会根据参数值查询出结果从而转为内置数据集    
  37.             Parameter[] parameters = workbook.getParameters();    
  38.             parameters[0].setValue("华东");    
  39.             // 定义parametermap用于执行报表,将执行后的结果工作薄保存为rworkBook    
  40.             java.util.Map parameterMap = new java.util.HashMap();    
  41.             for (int i = 0; i < parameters.length; i++) {    
  42.                 parameterMap.put(parameters[i].getName(), parameters[i]    
  43.                         .getValue());    
  44.             }    
  45.             // 定义输出流    
  46.             FileOutputStream outputStream;    
  47.             // 将未执行模板工作薄导出为内置数据集模板    
  48.             outputStream = new FileOutputStream(new File("D:\\EmbExport.cpt"));    
  49.             EmbeddedTableDataExporter templateExporter = new EmbeddedTableDataExporter();    
  50.             templateExporter.export(outputStream, workbook);    
  51.             // 将模板工作薄导出模板文件,在导出前您可以编辑导入的模板工作薄,可参考报表调用章节    
  52.             outputStream = new FileOutputStream(new File("D:\\TmpExport.cpt"));    
  53.             ((WorkBook) workbook).export(outputStream);  
  54.             // 将结果工作薄导出为2003Excel文件    
  55.             outputStream = new FileOutputStream(new File("D:\\ExcelExport.xls"));    
  56.             ExcelExporter ExcelExport = new ExcelExporter();    
  57.             ExcelExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));     
  58.             // 将结果工作薄导出为Word文件    
  59.             outputStream = new FileOutputStream(new File("D:\\WordExport.doc"));    
  60.             WordExporter WordExport = new WordExporter();    
  61.             WordExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));    
  62.             // 将结果工作薄导出为Pdf文件    
  63.             outputStream = new FileOutputStream(new File("D:\\PdfExport.pdf"));    
  64.             PDFExporter PdfExport = new PDFExporter();    
  65.             PdfExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));    
  66.             // 将结果工作薄导出为Txt文件(txt文件本身不支持表格、图表等,被导出模板一般为明细表)    
  67.             outputStream = new FileOutputStream(new File("D:\\TxtExport.txt"));    
  68.             TextExporter TxtExport = new TextExporter();    
  69.             TxtExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));    
  70.             // 将结果工作薄导出为Csv文件    
  71.             outputStream = new FileOutputStream(new File("D:\\CsvExport.csv"));    
  72.             CSVExporter CsvExport = new CSVExporter();    
  73.             CsvExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));              
  74.             //将结果工作薄导出为SVG文件    
  75.             outputStream = new FileOutputStream(new File("D:\\SvgExport.svg"));    
  76.             SVGExporter SvgExport = new SVGExporter();    
  77.             SvgExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));             
  78.             //将结果工作薄导出为image文件    
  79.             outputStream = new FileOutputStream(new File("D:\\PngExport.png"));    
  80.             ImageExporter ImageExport = new ImageExporter();    
  81.             ImageExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));                        
  82.             outputStream.close();    
  83.             ModuleContext.stopModules();  
  84.         } catch (Exception e) {    
  85.             e.printStackTrace();    
  86.         }    
  87.     }    
  88. }  

编译运行该代码后,就会在E盘下生成不同格式的文件,这样就导出成功了。

 

分享到:
评论

相关推荐

    何把水晶报表导出到HTML文件源程序实例,C#.net源代码编写,VisualStudio.net

    标题中的“何把水晶报表导出到HTML文件源程序实例”是一个关于在C#.NET环境中使用Visual Studio .NET开发的应用程序示例,该程序能够将水晶报表(Crystal Reports)转换并导出为HTML格式的文件。水晶报表是用于创建...

    Java 报表导出组件,支持Excel PDF 图片等多种格式

    在IT行业中,报表导出是数据可视化和信息传递的关键环节,尤其在企业级应用中,能够灵活地将数据导出为各种格式对于数据分析和报告分享至关重要。Java作为广泛应用的编程语言,提供了丰富的库和组件来实现这个功能。...

    文件导出功能实现

    这种功能在各种应用程序中广泛存在,如报表系统、数据分析工具等。 描述中提到的“Word文档导出”,意味着我们要关注的是如何在Java环境中生成Word文件。Java作为一种跨平台的编程语言,提供了多种库和框架来处理...

    Java报表工具FineReport导出EXCEL的四种API

    在使用FineReport进行报表开发和数据导出时,开发者还需要注意输出文件的路径设置,以及文件操作的异常处理,确保文件能够正确创建并且在发生错误时能够给出明确的提示。对于报表工具FineReport的深入学习和熟练运用...

    报表导出组件.rar

    报表导出组件是一种在软件开发中常见的功能模块,主要用于将数据以不同的格式导出,如Excel、PDF和图片等。这种组件通常集成在各种业务系统中,为用户提供方便的数据保存和分享方式。以下是对"报表导出组件"的详细...

    cognos 报表实现一键导出

    3. **处理导出**:在Java服务中,你可以使用各种库(如Apache POI for Excel,iText for PDF等)来生成所需的文件格式。 4. **返回结果**:生成的文件可以以流的形式返回给调用者,或者存储在服务器上,并返回文件...

    java水晶报表开发

    总的来说,Java水晶报表开发是将业务数据转化为直观、易于理解的报表的过程,涉及到报表设计、数据连接、API调用等多个环节。熟练掌握这项技术,可以帮助开发者提高数据分析的效率,提升应用程序的用户体验。

    页面报表导出思路

    对于前端,可以使用JavaScript库如jQuery DataTables或ag-Grid,它们提供了内置的报表导出功能,支持CSV、Excel、PDF等多种格式。这些库能够方便地解析和格式化表格数据,然后以用户选择的格式导出。如果需要自定义...

    纯前端:luckysheet在线编辑Excel导出,Excel文件导入

    至于Excel文件的导入导出,Luckysheet支持读取和写入CSV、JSON以及Excel的XLSX格式文件。用户可以通过选择文件或者拖拽的方式,将本地的Excel文件上传到网页上,然后在Luckysheet中进行查看和编辑。反之,编辑后的...

    水晶报表API教程

    例如,`ReportDocument.ExportToStream`方法可以将报表导出为各种格式(如PDF、Excel),而`CrystalDecisions.CrystalReports.Engine.SubreportObject`类则用于处理子报告。 6. **视图器集成**:提到“Crystal ...

    Java程序导出pdf报表文件之多语言应用

    通过PDFBox,我们可以轻松地添加文本、图像、表格等元素到PDF文件中,同时还可以设置字体、颜色、布局等样式,以满足不同报表的格式需求。 多语言支持是现代应用程序不可或缺的功能,尤其是在国际化的背景下。在...

    POI导出报表

    【POI导出报表】是Java开发中一个常见的任务,主要涉及如何利用Apache POI库来生成和导出Word、Excel以及PDF格式的报表。Apache POI是一个流行的开源项目,它为Microsoft Office文档(如Word、Excel)提供读写功能,...

    快速报表开发框架

    FasterExcelReports-QuickStart-zhCN.doc文件很可能包含了这个快速报表开发框架的快速入门指南,详细介绍了如何安装、配置以及使用框架来创建报表。如果你希望深入学习和应用这个框架,建议详细阅读这份文档,以获取...

    poi导出cvs文件

    在这个场景中,我们将探讨如何使用POI来创建CSV文件,这在数据导入导出、数据分析或报表生成等场景中非常常见。 CSV文件因其简洁和通用性而广泛使用,它可以用文本编辑器打开,也可以被大多数电子表格软件如...

    WinForm报表导入导出操作(Access版)

    数据导出通常是指将数据库中的数据保存为Excel或其他格式的文件。在Access中,可以先将数据库中的数据加载到DataTable,然后利用Microsoft.Office.Interop.Excel库创建一个新的Excel工作簿,将DataTable的数据写入...

    java 高级报表导出Excel

    在Java开发中,导出报表到Excel是一种常见的需求,尤其在数据分析、商务智能或企业管理软件中。本话题将深入探讨如何使用Java实现高级报表的Excel导出功能。 首先,我们需要理解Excel文件的基本结构。Excel文件通常...

    Java报表开发技术深入解析

    Java报表开发技术是Java应用程序中不可或缺的一部分,它用于生成、展示和分析数据,帮助企业做出决策。深入解析这一领域,我们需要了解多个关键知识点,包括报表工具的选择、报表设计、数据源处理、动态数据过滤以及...

    Java水晶报表开发技术

    Java水晶报表开发技术是Java应用程序中用于生成、展示和打印数据报表的重要工具。水晶报表(Crystal Reports)由SAP公司开发,它允许开发者利用各种数据源,如数据库、XML文件或Excel表格,创建复杂的报表和统计图表...

Global site tag (gtag.js) - Google Analytics