FineReport报表二次开发(详细)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FineReport报表二次开发
在大多数情况下FineReport都可以完全满足用户制作各种报表的需求,但是为了能够满足个别用户的个性化需求,FineReport提供了丰富二次开发接口,方便用户将FineReport和自己的项目实现无缝结合,用户在进行二次开发的工程中可以更加深入的体会到FineReport工具的强大功能。
例如:在一些特殊领域,可能需要一些特殊的函数。或者要将某个模板文件通过指定的打印机打印等等。
目录
Report的输入输出 (3)
单元格格式设置 (7)
将模板通过指定打印机打印 (10)
自定义函数 (12)
URL 传递参数 (22)
向报表中添加单元格 (25)
读取单元格内容 (29)
创建程序网络模版 (32)
读取模板报表 (36)
Report的输入输出
FineReport提供了强大的输入输出功能,所有的这些输入输出的类都在com.fr.report.io 包里面。Report的输入指从报表的模板文件(XML格式的)创建Report对象,输出指将Report
保存为模板文件,FineReport还支持将Report保存为PDF,Excel,Word,SVG,HTML,CSV
等文件格式。
•读取模板文件
•保存成模板文件
•输出成PDF文件
•输出成Word文件
•输出成Excel文件
•输出成文本文件
•可执行代码
读取模板文件
// 读取模板
File cptFile = new File("D:\\stuff.cpt");
TemplateImporter templateImporter = new TemplateImporter(); WorkBook workBook = (WorkBook)templateImporter.generate(cptFile);
Stuff.cpt是用报表设计器生成的模板文件。只需要用建立一个TemplateImporter对象,
然后调用它的generateReport()方法来产生一个Report对象,同时可以将产生的Report对
象强制转换成WorkSheet或者GroupReport。
保存成模板文件
// CPT
// 清空公式计算结果
E:\\newtemplate\\stuff.cpt这个是导出后新文档生成的地址
ReportHelper.clearFormulaResult(workBook);
outputStream = new FileOutputStream(new
File("E:\\newtemplate\\stuff.cpt"));
TemplateExporter templateExporter = new TemplateExporter();
templateExporter.export(outputStream,workBook.execute(paramet
erMap)) ;
通过调用TemplateExporter的exportReport(...)方法, 可以把Report对象以CPT格
式保存到外部磁盘文件当中。
可执行代码
读取报表模板stuff.cpt,再分别保存为stuff.cpt,stuff.pdf和stuff.xls。
package com.fr.demo;
import java.io.File;
import java.io.FileOutputStream;
import com.fr.base.FRContext;
import com.fr.base.dav.LocalEnv;
import com.fr.report.WorkBook;
import com.fr.report.core.ReportHelper;
import com.fr.report.io.ExcelExporter;
import com.fr.report.io.PDFExporter;
import com.fr.report.io.TemplateExporter;
import com.fr.report.io.TemplateImporter;
import com.fr.report.io.TextExporter;
import com.fr.report.io.WordExporter;
/**
* 演示如何导入导出模板
* @author edgar duan
* @version 6.5
*/
public class ReportIO {
/**
* @param args
*/
public static void main(String[] args) {
// 报表运行环境路径, WEB-INF目录所放的位置
String envPath = "C:/FineReport6.5/WebReport/WEB-INF";
// 设置当前报表运行环境, 报表预览时需要一个运行环境
// 没有WEB-INF目录时, 路径设置为null. FRContext.setCurrentEnv(new
LocalEnv(null));
FRContext.setCurrentEnv(new LocalEnv(envPath));
try {
// 读取模板
File cptFile = new File("D:\\stuff.cpt");
TemplateImporter templateImporter = new TemplateImporter();
WorkBook workBook =
(WorkBook)templateImporter.generate(cptFile);
java.util.Map parameterMap = new java.util.HashMap();
FileOutputStream outputStream;
//生成CPT
// 清空公式计算结果
ReportHelper.clearFormulaResult(workBook);
outputStream = new FileOutputStream(new File("E:\\newtemplate\\stuff.cpt"));
TemplateExporter templateExporter = new TemplateExporter();
templateExporter.export(outputStream,
workBook.execute(parameterMap)) ;
//生成PDF
ReportHelper.clearFormulaResult(workBook);
outputStream = new FileOutputStream(new
File("E:\\newtemplate\\stuff.pdf"));
PDFExporter pdfExporter = new PDFExporter();
pdfExporter.export(outputStream,
workBook.execute(parameterMap)) ;
// 生成DOC
ReportHelper.clearFormulaResult(workBook);
outputStream = new FileOutputStream(new
File("E:\\newtemplate\\stuff.doc"));
WordExporter wordExporter = new WordExporter();
wordExporter.export(outputStream,workBook.execute(parameterMap));
// 生成XLS
ReportHelper.clearFormulaResult(workBook);