报表开发导出各种格式文件的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盘下生成不同格式的文件,这样就导出成功了。


本文转自 雄霸天下啦 51CTO博客,原文链接:http://blog.51cto.com/10549520/1786632,如需转载请自行联系原作者

相关文章
|
11天前
|
API 数据安全/隐私保护 UED
探索鸿蒙的蓝牙A2DP与访问API:从学习到实现的开发之旅
在掌握了鸿蒙系统的开发基础后,我挑战了蓝牙功能的开发。通过Bluetooth A2DP和Access API,实现了蓝牙音频流传输、设备连接和权限管理。具体步骤包括:理解API作用、配置环境与权限、扫描并连接设备、实现音频流控制及动态切换设备。最终,我构建了一个简单的蓝牙音频播放器,具备设备扫描、连接、音频播放与停止、切换输出设备等功能。这次开发让我对蓝牙技术有了更深的理解,也为未来的复杂项目打下了坚实的基础。
98 58
探索鸿蒙的蓝牙A2DP与访问API:从学习到实现的开发之旅
|
1天前
|
安全 搜索推荐 数据挖掘
虾皮店铺商品API接口的开发、运用与收益
虾皮(Shopee)作为东南亚领先的电商平台,通过开放API接口为商家和开发者提供了全面的数据支持。本文详细介绍虾皮店铺商品API的开发与运用,涵盖注册认证、API文档解读、请求参数设置、签名生成、HTTP请求发送及响应解析等步骤,并提供Python代码示例。API接口广泛应用于电商导购、价格比较、商品推荐、数据分析等场景,带来提升用户体验、增加流量、提高运营效率等收益。开发者需注意API密钥安全、请求频率控制及遵守使用规则,确保接口稳定可靠。虾皮API推动了电商行业的创新与发展。
47 31
|
5天前
|
API 开发者 UED
自学记录鸿蒙API 13:PreviewKit从文件预览到应用开发
通过学习API 13,我深入研究了**PreviewKit(文件预览服务)**。该模块支持快速预览多种文件类型(文本、图片、视频、音频、PDF等),为文件管理类应用提供系统级支持。本文分享了从搭建开发环境到实现单文件和多文件预览的全过程,并介绍了如何构建一个实用的文件预览助手应用。通过实践,不仅掌握了技术细节,还提升了个人开发能力。希望这些经验能为其他开发者带来启发与帮助。
38 10
自学记录鸿蒙API 13:PreviewKit从文件预览到应用开发
|
13天前
|
存储 人工智能 API
AgentScope:阿里开源多智能体低代码开发平台,支持一键导出源码、多种模型API和本地模型部署
AgentScope是阿里巴巴集团开源的多智能体开发平台,旨在帮助开发者轻松构建和部署多智能体应用。该平台提供分布式支持,内置多种模型API和本地模型部署选项,支持多模态数据处理。
122 4
AgentScope:阿里开源多智能体低代码开发平台,支持一键导出源码、多种模型API和本地模型部署
|
4天前
|
存储 搜索推荐 API
拼多多根据ID取商品详情原数据API接口的开发、运用与收益
拼多多作为中国电商市场的重要参与者,通过开放平台提供了丰富的API接口,其中根据ID取商品详情原数据的API接口尤为重要。该接口允许开发者通过编程方式获取商品的详细信息,为电商数据分析、竞品分析、价格监测、商品推荐等多个领域带来了丰富的应用场景和显著的收益。
27 10
|
3天前
|
JSON 供应链 搜索推荐
淘宝APP分类API接口:开发、运用与收益全解析
淘宝APP作为国内领先的购物平台,拥有丰富的商品资源和庞大的用户群体。分类API接口是实现商品分类管理、查询及个性化推荐的关键工具。通过开发和使用该接口,商家可以构建分类树、进行商品查询与搜索、提供个性化推荐,从而提高销售额、增加商品曝光、提升用户体验并降低运营成本。此外,它还能帮助拓展业务范围,满足用户的多样化需求,推动电商业务的发展和创新。
18 5
|
10天前
|
存储 API 计算机视觉
自学记录HarmonyOS Next Image API 13:图像处理与传输的开发实践
在完成数字版权管理(DRM)项目后,我决定挑战HarmonyOS Next的图像处理功能,学习Image API和SendableImage API。这两个API支持图像加载、编辑、存储及跨设备发送共享。我计划开发一个简单的图像编辑与发送工具,实现图像裁剪、缩放及跨设备共享功能。通过研究,我深刻体会到HarmonyOS的强大设计,未来这些功能可应用于照片编辑、媒体共享等场景。如果你对图像处理感兴趣,不妨一起探索更多高级特性,共同进步。
67 11
|
7天前
|
JSON API 开发者
Lazada 商品评论列表 API 接口:开发、应用与收益
Lazada作为东南亚领先的电商平台,其商品评论数据蕴含丰富信息。通过开发和利用Lazada商品评论列表API接口,企业可深入挖掘这些数据,优化产品、营销和服务,提升客户体验和市场竞争力。该API基于HTTP协议,支持GET、POST等方法,开发者需注册获取API密钥,并选择合适的编程语言(如Python)进行开发。应用场景包括竞品分析、客户反馈处理及精准营销,帮助企业提升销售业绩、降低运营成本并增强品牌声誉。
23 2
|
10天前
|
供应链 搜索推荐 API
1688榜单商品详细信息API接口的开发、应用与收益
1688作为全球知名的B2B电商平台,为企业提供丰富的商品信息和交易机会。为满足企业对数据的需求,1688开发了榜单商品详细信息API接口,帮助企业批量获取商品详情,应用于信息采集、校验、同步与数据分析等领域,提升运营效率、优化库存管理、精准推荐、制定市场策略、降低采购成本并提高客户满意度。该接口通过HTTP请求调用,支持多种应用场景,助力企业在电商领域实现可持续发展。
51 4
|
9天前
|
监控 搜索推荐 API
京东按图搜索京东商品(拍立淘)API接口的开发、应用与收益
京东通过开放商品详情API接口,尤其是按图搜索(拍立淘)API,为开发者、企业和商家提供了创新空间和数据支持。该API基于图像识别技术,允许用户上传图片搜索相似商品,提升购物体验和平台竞争力。开发流程包括注册账号、获取密钥、准备图片、调用API并解析结果。应用场景涵盖电商平台优化、竞品分析、个性化推荐等,为企业带来显著收益,如增加销售额、提高利润空间和优化用户体验。未来,随着数字化转型的深入,该API的应用前景将更加广阔。
51 1