文件输出的多样性,准确性和稳定性对于我们常用的报表软件来说很重要。报表的输入是指从报表的模板文件(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文件。
-
-
outputStream = new FileOutputStream(new File("E:\\ExcelExport.xls"));
-
ExcelExporter ExcelExport = new ExcelExporter();
-
ExcelExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
4、导出Word文件
-
-
outputStream = new FileOutputStream(new File("E:\\WordExport.doc"));
-
WordExporter WordExport = new WordExporter();
-
WordExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
5、导出Pdf文件
-
-
outputStream = new FileOutputStream(newFile("E:\\PdfExport.pdf"));
-
PDFExporter PdfExport = newPDFExporter();
-
PdfExport.export(outputStream,workbook.execute(parameterMap,new WriteActor()));
6、导出Txt文件
-
-
outputStream = new FileOutputStream(new File("E:\\TxtExport.txt"));
"1709587" snippet_file_name="blog_20160606_6_1825679" name="code" class="java">
7、导出Csv文件
-
-
outputStream = new FileOutputStream(new File("E:\\CsvExport.csv"));
-
CSVExporter CsvExport = new CSVExporter();
-
CsvExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
8、导出Svg文件
-
-
outputStream = new FileOutputStream(new File("D:\\SvgExport.svg"));
-
SVGExporter SvgExport = new SVGExporter();
-
SvgExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
9、导出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("华东");
-
-
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);
-
-
outputStream = new FileOutputStream(new File("D:\\ExcelExport.xls"));
-
ExcelExporter ExcelExport = new ExcelExporter();
-
ExcelExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
-
-
outputStream = new FileOutputStream(new File("D:\\WordExport.doc"));
-
WordExporter WordExport = new WordExporter();
-
WordExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
-
-
outputStream = new FileOutputStream(new File("D:\\PdfExport.pdf"));
-
PDFExporter PdfExport = new PDFExporter();
-
PdfExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
-
-
outputStream = new FileOutputStream(new File("D:\\TxtExport.txt"));
-
TextExporter TxtExport = new TextExporter();
-
TxtExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
-
-
outputStream = new FileOutputStream(new File("D:\\CsvExport.csv"));
-
CSVExporter CsvExport = new CSVExporter();
-
CsvExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
-
-
outputStream = new FileOutputStream(new File("D:\\SvgExport.svg"));
-
SVGExporter SvgExport = new SVGExporter();
-
SvgExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
-
-
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盘下生成不同格式的文件,这样就导出成功了。
阅读(2703) | 评论(0) | 转发(0) |