报表开发导出各种格式文件的API
文件输出的多样性,准确性和稳定性对于我们常用的报表软件来说很重要。报表的输入是指从报表的模板文件(XML格式的)创建WorkBook对象,输出则指将报表保存为各种格式文件,比如Pdf、Excel、Word这种常见的文件格式,比如FineReport还支持cpt、Svg、Csv、Image(包含png、 jpg、gif、 bmp、wbmp)等多种文件格式。
因为常常会碰到报表的开发工作,这里总结了几种格式文件导出的API。
1、导出成内置数据集模板
导出成内置数据集模板,就是将原模板的数据源根据参数条件查询出结果并转为内置数据集,然后把模板导出,不需要对原模板进行计算(数据列扩展、公式计算等)。
- // 将未执行模板工作薄导出为内置数据集模板
- outputStream = new FileOutputStream(new File("E:\\EmbExport.cpt"));
- EmbeddedTableDataExporter templateExporter = new EmbeddedTableDataExporter();
- templateExporter.export(outputStream, workbook);
2、导出模板文件
我们可以将原模板通过程序编辑后再次导出为模板文件,或者将某一路径下的模板保存至另一路径下。
- // 将模板工作薄导出模板文件,在导出前您可以编辑导入的模板工作薄,可参考报表调用章节
- outputStream = new FileOutputStream(new File("E:\\TmpExport.cpt"));
- ((WorkBook) workbook).export(outputStream);
3、导出Excel文件
模板工作薄WorkBook执行后为结果工作薄ResultWorkBook,我们可以把计算后的结果导出成Excel文件。
- // 将结果工作薄导出为Excel文件
- outputStream = new FileOutputStream(new File("E:\\ExcelExport.xls"));
- ExcelExporter ExcelExport = new ExcelExporter();
- ExcelExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
4、导出Word文件
- // 将结果工作薄导出为Word文件
- outputStream = new FileOutputStream(new File("E:\\WordExport.doc"));
- WordExporter WordExport = new WordExporter();
- WordExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
5、导出Pdf文件
- // 将结果工作薄导出为Pdf文件
- outputStream = new FileOutputStream(newFile("E:\\PdfExport.pdf"));
- PDFExporter PdfExport = newPDFExporter();
- PdfExport.export(outputStream,workbook.execute(parameterMap,new WriteActor()));
6、导出Txt文件
- // 将结果工作薄导出为Txt文件(txt文件本身不支持表格、图表等,被导出模板一般为明细表)
- 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文件
- // 将结果工作薄导出为Csv文件
- outputStream = new FileOutputStream(new File("E:\\CsvExport.csv"));
- CSVExporter CsvExport = new CSVExporter();
- CsvExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
8、导出Svg文件
- //将结果工作薄导出为SVG文件
- outputStream = new FileOutputStream(new File("D:\\SvgExport.svg"));
- SVGExporter SvgExport = new SVGExporter();
- SvgExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
9、导出Image文件
- //将结果工作薄导出为image文件
- outputStream = new FileOutputStream(new File("D:\\PngExport.png"));
- ImageExporter ImageExport = new ImageExporter();
- ImageExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
10、释放进程
通过导出API在后台导出excel等文件,会产生很多进程,通过下面的方案释放进程。在导出完成之后添加下面代码:
- outputStream.close();
- ModuleContext.stopModules();
例如,一个完整的可执行代码:
- package com.fr.io;
- import java.io.File;
- import java.io.FileOutputStream;
- import com.fr.base.FRContext;
- import com.fr.general.ModuleContext;
- import com.fr.base.Parameter;
- import com.fr.dav.LocalEnv;
- import com.fr.io.exporter.CSVExporter;
- import com.fr.io.exporter.EmbeddedTableDataExporter;
- import com.fr.io.exporter.Excel2007Exporter;
- import com.fr.io.exporter.ExcelExporter;
- import com.fr.io.exporter.PDFExporter;
- import com.fr.io.exporter.TextExporter;
- import com.fr.io.exporter.WordExporter;
- import com.fr.io.exporter.SVGExporter;
- import com.fr.io.exporter.ImageExporter;
- import com.fr.main.impl.WorkBook;
- import com.fr.main.workbook.ResultWorkBook;
- import com.fr.report.module.EngineModule;
- import com.fr.stable.WriteActor;
- public class ExportApi {
- public static void main(String[] args) {
- // 定义报表运行环境,才能执行报表
- String envpath = "D:\\FineReport_8.0\\WebReport\\WEB-INF";
- FRContext.setCurrentEnv(new LocalEnv(envpath));
- ModuleContext.startModule(EngineModule.class.getName());
- ResultWorkBook rworkbook = null;
- try {
- // 未执行模板工作薄
- WorkBook workbook = (WorkBook) TemplateWorkBookIO
- .readTemplateWorkBook(FRContext.getCurrentEnv(),
- "\\doc\\Primary\\Parameter\\Parameter.cpt");
- // 获取报表参数并设置值,导出内置数据集时数据集会根据参数值查询出结果从而转为内置数据集
- Parameter[] parameters = workbook.getParameters();
- parameters[0].setValue("华东");
- // 定义parametermap用于执行报表,将执行后的结果工作薄保存为rworkBook
- java.util.Map parameterMap = new java.util.HashMap();
- for (int i = 0; i < parameters.length; i++) {
- parameterMap.put(parameters[i].getName(), parameters[i]
- .getValue());
- }
- // 定义输出流
- FileOutputStream outputStream;
- // 将未执行模板工作薄导出为内置数据集模板
- outputStream = new FileOutputStream(new File("D:\\EmbExport.cpt"));
- EmbeddedTableDataExporter templateExporter = new EmbeddedTableDataExporter();
- templateExporter.export(outputStream, workbook);
- // 将模板工作薄导出模板文件,在导出前您可以编辑导入的模板工作薄,可参考报表调用章节
- outputStream = new FileOutputStream(new File("D:\\TmpExport.cpt"));
- ((WorkBook) workbook).export(outputStream);
- // 将结果工作薄导出为2003Excel文件
- outputStream = new FileOutputStream(new File("D:\\ExcelExport.xls"));
- ExcelExporter ExcelExport = new ExcelExporter();
- ExcelExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
- // 将结果工作薄导出为Word文件
- outputStream = new FileOutputStream(new File("D:\\WordExport.doc"));
- WordExporter WordExport = new WordExporter();
- WordExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
- // 将结果工作薄导出为Pdf文件
- outputStream = new FileOutputStream(new File("D:\\PdfExport.pdf"));
- PDFExporter PdfExport = new PDFExporter();
- PdfExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
- // 将结果工作薄导出为Txt文件(txt文件本身不支持表格、图表等,被导出模板一般为明细表)
- outputStream = new FileOutputStream(new File("D:\\TxtExport.txt"));
- TextExporter TxtExport = new TextExporter();
- TxtExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
- // 将结果工作薄导出为Csv文件
- outputStream = new FileOutputStream(new File("D:\\CsvExport.csv"));
- CSVExporter CsvExport = new CSVExporter();
- CsvExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
- //将结果工作薄导出为SVG文件
- outputStream = new FileOutputStream(new File("D:\\SvgExport.svg"));
- SVGExporter SvgExport = new SVGExporter();
- SvgExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
- //将结果工作薄导出为image文件
- outputStream = new FileOutputStream(new File("D:\\PngExport.png"));
- ImageExporter ImageExport = new ImageExporter();
- ImageExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
- outputStream.close();
- ModuleContext.stopModules();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
编译运行该代码后,就会在E盘下生成不同格式的文件,这样就导出成功了。
报表开发导出各种格式文件的API的更多相关文章
- 导出CSV格式文件,用Excel打开乱码的解决办法
导出CSV格式文件,用Excel打开乱码的解决办法 1.治标不治本的办法 将导出CSV数据文件用记事本打开,然后另存为"ANSI"编码格式,再用Excel打开,乱码解决. 但是,这 ...
- Powerdesigner 导出Excel格式数据字典 导出Excel格式文件
版权声明:本文为博主原创文章,转载请注明出处; 网上我也看到了很多的Powerdesigner 导出方法,因为Powerdesigner 提供了部分VBA功能,所以让我用代码导出Excel格式文件得以 ...
- 使用PHPExcel导入导出excel格式文件
使用PHPExcel导入导出excel格式文件 作者:zccst 因为导出使用较多,以下是导出实现过程. 第一步,将PHPExcel的源码拷贝到项目的lib下 文件包含:PHPExcel.ph ...
- java导出csv格式文件
导出csv格式文件的本质是导出以逗号为分隔的文本数据 import java.io.BufferedWriter; import java.io.File; import java.io.FileIn ...
- asp.net NPOI导出xlsx格式文件,打开文件报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃”
NPOI导出xlsx格式文件,会出现如下情况: 点击“是”: 导出代码如下: /// <summary> /// 将datatable数据写入excel并下载 /// </summa ...
- JSP页面导出PDF格式文件
JSP页面导出PDF格式文件基本在前端页面可以全部完成 <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/ ...
- confluence导出PDF格式文件不显示中文解决
由于confluence导出PDF格式文件需要应用字体文件,下载字体文件在confluence管理员界面安装即可. 我这里使用从simhei.ttf楷体,可以从windowns主机里下载(c:/win ...
- OAF_文件系列2_实现OAF导出CSV格式文件ExportButton(案例)
20150727 Created By BaoXinjian
- java导出json格式文件
生成json文件代码: import java.io.File; import java.io.FileWriter; import java.io.Writer; public class Crea ...
随机推荐
- 基于STM32Cube的ADC模数采样设计
1.背景 此实验建立在STM32F429核心板基础上,对于深刻了解STM32Cube使用具有深刻意义.利用DMA进行ADC采样,具有速度快,极大减少CPU消耗的优势,对于数据采集系统具 ...
- C#~异步编程再续~await与async引起的w3wp.exe崩溃
返回目录 最近怪事又开始发生了,IIS的应用程序池无做挂掉,都指向同一个矛头,async,threadPool,Task,还有一个System.NullReferenceException,所以这些都 ...
- 基于CkEditor实现.net在线开发之路(2)编写C#代码,怎么调用它。
上一章简约的介绍了CkEditor编辑器,可以编辑js逻辑代码,css,html,C#代码,这章我根据实际例子,讲解怎么编写C#代码和怎么调用它. 大家都还记得刚刚接触程序编时的hello Word吧 ...
- 使用NPOI创建Excel
一.NPOI 函式庫: NPOI 函式庫檔案有七個,NPOI 函式庫可以在 http://npoi.codeplex.com 中下載,分別是: NPOI.DLL:NPOI 核心函式庫. NPOI.DD ...
- java jni c++ 例子
1. java程序 public class TestHello { static { System.loadLibrary("TestHello"); } public stat ...
- 【JAVA并发编程实战】3、同步容器
同步容器包括Vector和Hashtable,还有一些由Collections.synchronizedXxx等工厂方法创建的 1.同步容器类的问题 同步容器类都是线程安全的,但是有些时候还是要客户端 ...
- WebAPI生成可导入到PostMan的数据
一.前言 现在使用WebAPI来作为实现企业服务化的需求非常常见,不可否认它也是很便于使用的,基于注释可以生成对应的帮助文档(Microsoft.AspNet.WebApi.HelpPage),但是比 ...
- 禁止root用户远程登录
Linux修改ssh端口22 vi /etc/ssh/ssh_config vi /etc/ssh/sshd_config 然后修改为port 8888 以root身份service sshd res ...
- Maven学习随笔二——Maven初始配置
到现在为止,我对maven的理解是,跟svn差不多,帮我们管理项目的工具,到底是不是这样,拭目以待!! 弱弱解释,svn是什么? 简单的说,您可以把SVN当成您的备份服务器,更好的是,他可以帮您记住每 ...
- 寻觅[Getting Answers]
原文:http://www.mikeash.com/getting_answers.html 作者:mike@mikeash.com 译者:今天早上起床,有幸读到这篇文章,觉得它是我们在这个世界上的基 ...