《FineReport报表二次开发》由会员分享,可在线阅读,更多相关《FineReport报表二次开发(33页珍藏版)》请在金锄头文库上搜索。
1、FineReport报表二次开发在大多数情况下FineReport都可以完全满足用户制作各种报表的需求,但是为了能够满足 个别用户的个性化需求,FineReport提供了丰富二次开发接口,方便用户将FineRepor七和自己 的项目实现无缝结合,用户在进行二次开发的工程中可以更加深入的体会到FineReport 工具的 强大功能。例如:在一些特殊领域,可能需要一些特殊的函数。或者要将某个模板文件通过指定的打印 机打印等等。目录单元格格式设置7将模板通过指定打印机打印 10自定义函数12URL传递参数22向报表中添加单元格25读取单元格容29创建程序网络模版32读取模板报表36Report的输入
2、输出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 temp
3、lateImporter = new TemplateImporter(); WorkBook workBook = (WorkBook)templateImporter.generate(cptFile);Stuff.cpt是用报表设计器生成的模板文件。只需要用建立一个TemplateImporter对象,然 后调用它的generateReport()方法来产生一个Report对象,同时可以将产生的Report对象强 制转换成 WorkSheet 或者 GroupReport。保存成模板文件/ CPT/清空公式计算结果E:newtemplatestuff.cpt这个是导出后新文档生成的地址R
4、eportHelper. clearFormulaResult (workBook);outputStream = newFileOutputStream(newFile(E:newtemplatestuff.cpt);TemplateExporter templateExporter = new TemplateExporter();templateExporter.export(outputStream,workBook.execute(parameterMap);通过调用TemplateExporter的exportReport(.)方法,可以把Report对象以CPT格式保 存到外部磁
5、盘文件当中。可执行代码读取报表模板stuff.cpt,再分别保存为stuff.cpt,stuff.pdf和stuff.xls。package .fr.demo;import java.io.File;import java.io.FileOutputStream;import .fr.base.FRContext;import .fr.base.dav.LocalEnv;import .fr.report.WorkBook;import .fr.report.core.ReportHelper;import .fr.report.io.ExcelExporter;import .fr.repo
6、rt.io.PDFExporter;import .fr.report.io.TemplateExporter;import .fr.report.io.TemplateImporter;import .fr.report.io.TextExporter;import .fr.report.io.WordExporter;/*演示如何导入导出模板* author edgar duan* version 6.5*/public class ReportIO /* param args*/public static void main(String args) /报表运行环境路径,WEB-INF目
7、录所放的位置String envPath = C:/FineReport6.5/WebReport/WEB-INF;/设置当前报表运行环境,报表预览时需要一个运行环境/ 没有 WEB-INF 目录时,路径设置为 null. FRContext.setCurrentEnv(newLocalEnv(null);FRContext.setCurrentEnv(new LocalEnv(envPath);try /读取模板File cptFile = new File(D:stuff.cpt);TemplateImporter templateImporter = new TemplateImport
8、er();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:newtemplatestuff.cpt);TemplateExporter templ
9、ateExporter = new TemplateExporter();templateExporter.export(outputStream,workBook.execute(parameterMap);/生成 PDFReportHelper.clearFormulaResult(workBook);outputStream = new FileOutputStream(newFile(E:newtemplatestuff.pdf);PDFExporter pdfExporter = new PDFExporter();pdfExporter.export(outputStream, w
10、orkBook.execute(parameterMap);/生成DOCReportHelper.clearFormulaResult(workBook);outputStream = new FileOutputStream(newFile(E:newtemplatestuff.doc);WordExporter wordExporter = new WordExporter();wordExporter.export(outputStream,workBook.execute(parameterMap);/生成XLSReportHelper.clearFormulaResult(workB
11、ook);outputstream = new FileOutputStream(new File(E:newtemplatestuff.xls);ExcelExporter excelExporter = new ExcelExporter();excelExporter.export(outputStream,workBook.execute(parameterMap);生成TXTReportHelper.clearFormulaResult(workBook);outputStream = new FileOutputStream(new File(E:newtemplatestuff.
12、txt);TextExporter textExporter = new TextExporter();textExporter.export(outputStream,workBook.execute(parameterMap); catch(Exception e) e.printStackTrace();单元格格式设置新建一个单元格,位置为(2, 2),列宽为2/行高为2,值为文本FineReportCellElement cellElement = new CellElement(2, 2, 2, 2, FineReport);/得到CellElement的样式,如果没有新建默认样式S
13、tyle style = cellElement.getStyle();if(style = null) style = Style.getInstance();/设置字体和前景的颜色FRFont frFont = FRFont.getInstance(Dialog, Font.BOLD, 14);frFont = frFont.applyForeground(new Color(21, 76, 160);style = style.deriveFRFont(frFont);/设置背景ColorBackground background = ColorBackground.getInstanc
14、e(new Color(255, 255, 17 7);style = style.deriveBackground(background);/设置水平居中style = style.deriveHorizontalAlignment(Constants.CENTER);/设置边框style = style.deriveBorder(Constants.LINE_DASH_DOT, Color.red, Constants.LINE_D ASH_DOT, Color.yellow, Constants.LINE_DASH_DOT, Color.BLUE, Constants.LINE_DASH
15、 _DOT, Color.CYAN);/改变单元格的样式cellElement.setStyle(style);改变单元格的格式,应先取出该单元格(CellElement)的格式(Style)。在默认的情况下 Styl e是null,故当取出Style后应先判断其值是否为null,如果这个值为空,则需先新建一 个Style,然后再将该值赋给CellElement。最后根据Style和FRFont中的方法进一步地设置该 单元格的各种属性。可执行代码如下:package .fr.demo;import java.awt.Color;import java.awt.Font;import .fr.base.Constants;import .fr.base.FRFont;import .fr.base.Style;import .fr.base.background.ColorBackground;