ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:385.69KB ,
资源ID:4585569      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4585569.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(FineReport报表二次开发详细.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

FineReport报表二次开发详细.docx

1、FineReport报表二次开发详细 FineReport报表二次开发在大多数情况下FineReport都可以完全满足用户制作各种报表的需求,但是为了能够满足个别用户的个性化需求,FineReport提供了丰富二次开发接口,方便用户将FineReport和自己的项目实现无缝结合,用户在进行二次开发的工程中可以更加深入的体会到FineReport工具的强大功能。例如:在一些特殊领域,可能需要一些特殊的函数。或者要将某个模板文件通过指定的打印机打印等等。Report的输入输出 3单元格格式设置 7将模板通过指定打印机打印 10自定义函数 12URL 传递参数 22向报表中添加单元格25读取单元格内

2、容29创建程序网络模版32读取模板报表36Report的输入输出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:s

3、tuff.cpt); TemplateImporter templateImporter = new TemplateImporter(); WorkBook workBook = (WorkBook)templateImporter.generate(cptFile); Stuff.cpt是用报表设计器生成的模板文件。只需要用建立一个TemplateImporter对象, 然后调用它的generateReport()方法来产生一个Report对象,同时可以将产生的Report对象强制转换成WorkSheet或者GroupReport。保存成模板文件/ CPT / 清空公式计算结果 E:new

4、templatestuff.cpt这个是导出后新文档生成的地址 ReportHelper.clearFormulaResult(workBook); outputStream = new FileOutputStream(new File(E:newtemplatestuff.cpt); TemplateExporter templateExporter = new TemplateExporter(); templateExporter.export(outputStream,workBook.execute(parameterMap) ;通过调用TemplateExporter的expor

5、tReport(.)方法, 可以把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.Repor

6、tHelper; 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 */ pu

7、blic 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)

8、; 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.clearF

9、ormulaResult(workBook); outputStream = new FileOutputStream(new File(E:newtemplatestuff.cpt); TemplateExporter templateExporter = new TemplateExporter(); templateExporter.export(outputStream, workBook.execute(parameterMap) ; /生成 PDF ReportHelper.clearFormulaResult(workBook); outputStream = new FileO

10、utputStream(new File(E:newtemplatestuff.pdf); PDFExporter pdfExporter = new PDFExporter(); pdfExporter.export(outputStream, workBook.execute(parameterMap) ; / 生成DOC ReportHelper.clearFormulaResult(workBook); outputStream = new FileOutputStream(new File(E:newtemplatestuff.doc); WordExporter wordExpor

11、ter = new WordExporter(); wordExporter.export(outputStream,workBook.execute(parameterMap); / 生成XLS ReportHelper.clearFormulaResult(workBook); outputStream = new FileOutputStream(new File(E:newtemplatestuff.xls); ExcelExporter excelExporter = new ExcelExporter(); excelExporter.export(outputStream,wor

12、kBook.execute(parameterMap); /生成 TXT ReportHelper.clearFormulaResult(workBook); outputStream = new FileOutputStream(new File(E:newtemplatestuff.txt); TextExporter textExporter = new TextExporter(); textExporter.export(outputStream,workBook.execute(parameterMap); catch(Exception e) e.printStackTrace(

13、); 单元格格式设置/新建一个单元格,位置为(2,2),列宽为2 /行高为2,值为文本FineReport CellElementcellElement=newCellElement(2,2,2,2,FineReport); /得到CellElement的样式,如果没有新建默认样式 Stylestyle=cellElement.getStyle(); if(style=null) style=Style.getInstance(); /设置字体和前景的颜色 FRFontfrFont=FRFont.getInstance(Dialog,Font.BOLD,14); frFont=frFont.a

14、pplyForeground(newColor(21,76,160); style=style.deriveFRFont(frFont); /设置背景 ColorBackgroundbackground=ColorBackground.getInstance(newColor(255,255,177); style=style.deriveBackground(background); /设置水平居中 style=style.deriveHorizontalAlignment(Constants.CENTER); /设置边框 style=style.deriveBorder(Constants

15、.LINE_DASH_DOT,Color.red,Constants.LINE_DASH_DOT,Color.yellow,Constants.LINE_DASH_DOT,Color.BLUE,Constants.LINE_DASH_DOT,Color.CYAN); /改变单元格的样式 cellElement.setStyle(style); 改变单元格的格式,应先取出该单元格(CellElement)的格式(Style)。在默认的情况下Style是null,故当取出Style后应先判断其值是否为null,如果这个值为空,则需先新建一个Style,然后再将该值赋给CellElement。最后根

16、据Style和FRFont中的方法进一步地设置该单元格的各种属性。可执行代码如下:package com.fr.demo; import java.awt.Color; import java.awt.Font; import com.fr.base.Constants;import com.fr.base.FRFont; import com.fr.base.Style; import com.fr.base.background.ColorBackground;import com.fr.report.CellElement; import com.fr.report.DefaultCel

17、lElement; import com.fr.report.WorkBook;import com.fr.report.WorkBookTemplate;import com.fr.report.WorkSheet; import com.fr.web.Reportlet; import com.fr.web.ReportletRequest; /* * ReportletFromTemplateDemo. * author marks * 设置单元格格式 */ public class CellElementStyleDemo implements Reportlet public Cel

18、lElementStyleDemo() /建立新报表需要传参(ReportletRequest reportletRequest) public WorkBookTemplate createReport(ReportletRequest reportletRequest) /new a WorkSheet WorkBook wb = new WorkBook(); WorkSheet workSheet = new WorkSheet(); /new a cellElement with String FineReport CellElement cellElement1 = new Def

19、aultCellElement(1, 1, FineReport); /add the cellElement to the workSheet workSheet.addCellElement(cellElement1); /set the columnWidth of 1 to 200px,rowHeight of 1 to 30px workSheet.setColumnWidth(1, 200); workSheet.setRowHeight(1, 30); /set the font of cellElement1 Style style = Style.getInstance();

20、 FRFont frFont = FRFont.getInstance(Tahoma, Font.BOLD | Font.ITALIC, 20); frFont = frFont.applyForeground(Color.red); style = style.deriveFRFont(frFont); / 设置背景 ColorBackground background = ColorBackground.getInstance(new Color(255, 255, 177); style = style.deriveBackground(background); / 设置水平居中 sty

21、le = style.deriveHorizontalAlignment(Constants.CENTER); / 设置边框 style = style.deriveBorder(Constants.LINE_DASH_DOT, Color.red, Constants.LINE_DASH_DOT, Color.yellow, Constants.LINE_DASH_DOT, Color.BLUE, Constants.LINE_DASH_DOT, Color.CYAN); cellElement1.setStyle(style); /set the columnWidth of 4 to 2

22、00px,rowHeight of 5 to 50px workSheet.setColumnWidth(4, 200); wb.addReport(workSheet); return wb; 结果如下图所示:将模板通过指定打印机打印用户在使用FineReport进行二次开发的过程中有时候需要对不同文件通过不同的打印机打印出来,比如A打印机只能打印A.TXT; B打印机只能打印b.txt.。得到当前报表运行环境 String envPath = C:/FineReport6.5/WebReport/WEB-INF; / 设置当前报表运行环境, 报表预览时需要一个运行环境 / 没有WEB-IN

23、F目录时, 路径设置为null. FRContext.setCurrentEnv(new LocalEnv(null); FRContext.setCurrentEnv(new LocalEnv(envPath); 读取模板文件 / 读取模板 WorkBookTemplate wbTpl = FRContext.getCurrentEnv().readTemplate(stuff.cpt); 指定打印机打印PrintUtils.print(wbTpl.execute(null).generateReportPageSet().getTraversingCase(), false, Smart

24、Print); 可执行代码package com.fr.demo;import com.fr.base.FRContext;import com.fr.base.dav.LocalEnv;import com.fr.base.print.PrintUtils;import com.fr.report.WorkBookTemplate;/* * 演示如何将模板通过指定打印机打印 * * author edgar duan * version 6.5 */public class PrintDemo public static void main(String args) / 报表运行环境路径,

25、WEB-INF目录所放的位置 String envPath = C:/FineReport6.5/WebReport/WEB-INF; / 设置当前报表运行环境, 报表预览时需要一个运行环境 / 没有WEB-INF目录时, 路径设置为null. FRContext.setCurrentEnv(new LocalEnv(null); FRContext.setCurrentEnv(new LocalEnv(envPath); try WorkBookTemplate wbTpl = FRContext.getCurrentEnv().readTemplate(stuff.cpt); /null

26、为模板需要传的参数,false为是否弹出提示窗口,Smart Print 为打印机名称 PrintUtils.print(wbTpl.execute(null).generateReportPageSet().getTraversingCase(), false, Smart Print); catch(Exception e) e.printStackTrace(); 自定义函数FineReport已经提供了大量的自带函数,在正常情况下足够满足用户的报表制作需求,但是在一些特殊领域,可能需要一些特殊的函数,在这种情况下,FineReport提供了自定义函数机制,可以由用户根据业务需要自己来定

27、义一些函数,但这些函数必须满足FineReport函数定义规则。 FineReport函数定义规则:Functionname(Para,Para,.),其中Functionname为函数名,Para为参数。 函数原理在FineReport中,每一个函数都被定义成一个类,这个类必须要实现Function这个接口,在运算的时候首先通过函数名反射取得这个类,然后调用它的run(Object agrs)方法。下面以SUM这个函数为例。 /* * Copyright(c) 2001-2008, FineReport Inc, All Rights Reserved. */package com.fr.r

28、eport.script.function;import com.fr.report.script.NormalFunction;import com.fr.report.script.core.FArray;import com.fr.report.script.core.FunctionHelper;/* * Function. */public class SUM extends NormalFunction /* * Run the function on the stack. Pops the arguments from the stack, * then return the r

29、esult. */ public Object run(Object args) double result = 0; for(int i = 0; i args.length; i+) /p:需要先判断是否为null. if(argsi = null) continue; result += parseObject(argsi); return FunctionHelper.parsePrimitiveDouble(result); /* * 把Object转成double类型的值 */ private double parseObject(Object obj) if (obj instanceof Number) return (Number)obj).doubleValue(); else if (obj instance

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1