常规
一般常规属性可以直接在ReportDefine对象中设置,如下
rd.setSubmit(ReportDefine.SUBMIT_UPDATABLE); //设置数据提交方案,ReportDefine.SUBMIT_UPDATABLE代表要保存的单元格,ReportDefine.SUBMIT_ALL代表所有单元格,ReportDefine.SUBMIT_UPDATABLE_WRITABLE代表要保存的和可写的单元格
rd.setReportType(ReportDefine.RPT_NORMAL); //设置报表样式,ReportDefine.RPT_NORMAL代表普通报表,ReportDefine.RPT_LINE代表行式报表
◆ PrintSetup打印设置类
PrintSetup ps = new PrintSetup();
ps.setBackGraphPrinted(false); //是否打印背景图
ps.setPaper(PrintSetup.A4_PAPERSIZE); //设置纸张大小为A4,类似的还有别的纸张尺寸,详看PrintSetup的帮助
ps. setBottomMargin(25); //设置下边距(mm),类似的还有设置上、下、左、右等边距
ps. setColTableHeaderAndFooterMode(PrintSetup.PRINT_FIRST_PAGE); //设置列表头和列表尾的打印方式, PrintSetup.PRINT_FIRST_PAGE代表只第一页打印,PrintSetup.PRINT_PER_PAGE代表每页都打
ps. setHAlign(PrintSetup. HALIGN_CENTER); //设置打印水平对齐位置,PrintSetup. HALIGN_CENTER代表水平居中,PrintSetup. HALIGN_LEFT代表水平居左,PrintSetup. HALIGN_RIGHT代表水平居右
ps. setLayout(PrintSetup.LAYOUT_COL); //设置按数据行数分页、一张纸打印多页时的打印顺序,PrintSetup.LAYOUT_COL代表先列后行,PrintSetup.LAYOUT_ROW代表先行后列
ps. setLayoutColNum(3); //设置按数据行数分页且每张纸打印多页(NxP)时,一张纸上的布局列数P
ps. setLayoutRowNum(2); //设置按数据行数分页且每张纸打印多页(NxP)时,一张纸上的布局行数N
ps. setOrientation(PrintSetup.LANDSCAPE); //设置纸张方向,PrintSetup.LANDSCAPE代表横向,PrintSetup.PORTRAIT代表竖向
ps. setPageHeaderAndFooterXMode(PrintSetup.PRINT_SPLITTED_FIRST_PAGE); //设置页眉与页脚横向分页时打印方式,PrintSetup.PRINT_SPLITTED_FIRST_PAGE代表仅首页打印切分部分,PrintSetup.PRINT_SPLITTED_FIRST_PAGE代表每页都打印切分部分,PrintSetup.PRINT_FIRST_PAGE代表只第一页打印,PrintSetup.PRINT_PER_PAGE代表每页都打
ps. setPageHeaderAndFooterYMode(PrintSetup.PRINT_SPLITTED_FIRST_PAGE); //设置页眉与页脚纵向分页时打印方式,PrintSetup.PRINT_FIRST_PAGE代表只第一页打印,PrintSetup.PRINT_PER_PAGE代表每页都打
ps. setPagerStyle(PrintSetup.PAGER_NONE); //设置分页方式,PrintSetup.PAGER_NONE代表不分页,PrintSetup.PAGER_ROW代表按行数分页,PrintSetup.PAGER_SIZE代表按纸张尺寸分页
ps. setPaperSize(360, 840); //设置自定义纸张大小mm
ps. setRowNumPerPage(5); //设置按数据行数分页时每页的数据行数
ps. setTableColumnNum(3); //设分栏数
ps. setTitleXMode(byte mode); //设置标题横向分页时打印方式,PrintSetup.PRINT_SPLITTED_FIRST_PAGE代表仅首页打印切分部分,PrintSetup.PRINT_SPLITTED_FIRST_PAGE代表每页都打印切分部分,PrintSetup.PRINT_FIRST_PAGE代表只第一页打印,PrintSetup.PRINT_PER_PAGE代表每页都打
ps. setTitleYMode(byte mode); //设置标题纵向分页时打印方式,PrintSetup.PRINT_FIRST_PAGE代表只第一页打印,PrintSetup.PRINT_PER_PAGE代表每页都打
ps. setVirtualPrinter(java.lang.String printerName); //设置虚拟打印机名,用于带表格线的文本报表打印
ps. setZoomMode(PrintSetup.ZOOM_NONE); //设置缩放打印方式,PrintSetup.ZOOM_BY_SCALE代表按指定比例缩放(需要填入缩放比例),PrintSetup.ZOOM_HEIGHT代表按高缩放,报表高度与纸高匹配,PrintSetup.ZOOM_NONE代表不缩放,PrintSetup.ZOOM_TO_PAGE代表缩放到指定的页数(需要填入几页宽,几页高),PrintSetup.ZOOM_WIDTH代表按宽缩放,报表宽度与纸宽匹配
rd.setPrintSetup( ps ); //将打印属性设置给ReportDefine
◆ PrintFrame打印对话框类:
PrintFrame pf=new PrintFrame(iReport,null); //iReport为计算后的报表,报表运算,参见2.1.1
pf.setColumns(2); //设置报表的分栏数
pf.setPrintablePages(1); //设置要打印的页号,可以多次调以设置多个页
pf.setPrintablePages(2,6); //设置要打印的连续页号 ,包括起始和终止页号
pf.setHorizontalAlign(PrintSetup.HALIGN_CENTER); //设置横向对齐方式,“PrintSetup.HALIGN_CENTER”表示居中; “PrintSetup.HALIGN_LEFT”表示居左; “PrintSetup.HALIGN_RIGHT”表示居右
PageFormat pageFormat=new PageFormat(); //定义描述打印页面方向和大小的对象
Paper paper=new Paper(); //定义一个新纸张对象
paper.setSize(684,792); //设置纸张的大小
paper.setImageableArea(100,100,594,702) ; //设置打印区域的大小
pageFormat.setPaper(paper); //为PageFormat对象设置Paper对象。
pf.setPrintPageFormat(pageFormat); //设置打印纸张的页面设置
pf. setPrintZoomType(PrintSetup.ZOOM_WIDTH); //设置打印时对报表的缩放类型,取值为: PrintSetup.ZOOM_NONE 表示不缩放;取值为:PrintSetup.ZOOM_WIDTH 表示按宽缩放,报表宽度与纸宽匹配;取值为:PrintSetup.ZOOM_HEIGHT 表示按高缩放,报表高度与纸高匹配;取值为:PrintSetup.ZOOM_BY_SCALE 表示按指定比例缩放(需要填入缩放比例)。
pf.setPrintZoomScale(100); //设置打印时对报表的缩放比例,该比例为百分数,例如100为原值大小。
pf.setDisplayScale(100); //设置预览报表时对报表的缩放比例,修改该比例仅影响显示,跟实际打印输出没有关系,该比例为百分数,例如100为原值大小。
pf.goToPage(1); //在当前的页面定义范围内设置要显示的页面,页号从1开始
pf.goToFirstPage(1); //设置当前定义范围内的首页
pf.goToLastPage (6); //设置当前定义范围内的末页
pf.goToPreviousPage (5); //设置当前定义范围内的前页
pf.goToNextPage (6); //设置当前定义范围内的后页
pf.getReportPane(); //获取显示报表的面板
pf.getPrinterJob(); //获取当前的打印任务对象,可以自己取消或者获取对象里面的任何有意义的信息。注意:只有调用了类似于Print的方法之后,该对象才不为null
pf.backgroundPrinting (); //直接在后台打印报表,不显示打印窗口,不选择打印机
pf.print(); //输出打印任务
pf.directPrint (true); //将报表直接发送到打印机进行打印,参数为true表示需要选择打印机,参数为false表示不需要选择打印机
导出
ExportConfig expConfig = new ExportConfig(); //新建导出属性
expConfig.setExcelHiddenColExported(false); //设导出到Excel时是否导出隐藏列
expConfig.setExcelHiddenRowExported(false); //设导出到Excel时是否导出隐藏行
expConfig.setExcelFilePassword("password"); //设置Excel文件的口令
expConfig.setPDFOwnerPassword("password"); //设置导出PDF文件时拥有者的口令
expConfig.setPDFAssembly(true); //设置导出PDF文件时是否允许文档汇编
expConfig.setPDFCopy(true); //设置导出PDF文件时是否允许复制
expConfig.setPDFDegradedPrinting(true); //设置导出PDF文件时是否允许打印
expConfig.setPDFFillIn(true); // 设置导出PDF文件时是否允许填写表格栏
expConfig.setPDFModifyAnnotations(true); //设置导出PDF文件时是否允许常规编辑、注释
expConfig.setPDFModifyContents(true); //设置导出PDF文件时是否允许更改文档
expConfig.setPDFScreenReaders(true); //设置导出PDF文件时是否启用视障人士内容访问
expConfig.setPDFUserPassword("password"); //设导出到PDF文件时的用户口令
expConfig.setWordPassword("password"); //设置Word文件的口令
rd.setExportConfig( expConfig); //将导出属性设置给ReportDefine
背景图
BackGraphConfig bgc = new BackGraphConfig(); //构造背景图属性
bgc.setDispMode(BackGraphConfig.DISP_PER_PAGE); //设置背景图显示方式
BackGraphConfig.DISP_PER_PAGE代表每页显示,BackGraphConfig.DISP_NONE代表不显示
bgc.setImageSource(BackGraphConfig.SOURCE_TEXT); //设置背景图的生成来源
BackGraphConfig.SOURCE_NONE代表不设置"空白",BackGraphConfig.SOURCE_PICTURE代表用"图片",BackGraphConfig.SOURCE_TEXT代表用"水印"
bgc.setType(BackGraphConfig.TYPE_URL); //设置背景图配置类型,
BackGraphConfig.TYPE_EXP代表表达式串,BackGraphConfig.TYPE_URL代表url 或文本
bgc.setValue("E:/files/pic.jpg"); //设置图片的URL或表达式串
参数type为TYPE_URL时此参数表示URL,为TYPE_EXP时此参数表示表达式串
bgc.setMode(BackGraphConfig.TEXT_NORMAL); //设置背景图片或水印的样式
图片样式:BackGraphConfig.MODE_NONE代表左上,BackGraphConfig.MODE_FILL代表填充,BackGraphConfig.MODE_TILE代表平铺
水印样式:BackGraphConfig.TEXT_NORMAL代表水平,BackGraphConfig.TEXT_TILT代表倾斜
bgc.setValue("raqsoft水印文字"); //设置水印的文本内容或表达式串
参数type为TYPE_URL时此参数表示文本,为TYPE_EXP时此参数表示表达式串
bgc.setFontName("黑体"); //设置水印文字的字体名
bgc.setFontSize(20); //设置水印文字的字号
bgc.setTextColor(165536); //设置水印文字的颜色值
bgc.setTransparency(10); //设置水印文字的透明度,值为0到100
bgc.setTextGap(60); //设置水印文字平铺时的文本间隔
rd.setBackGraphConfig( bgc ); //把背景图属性设置给ReportDefine
子报表
SubReportMetaData subReport = new SubReportMetaData(); //构造子报表元数据
SubReportConfig src = new SubReportConfig(); //构造子报表定义
src.setName("subReport1"); //设置子报表名称
src.setURLType(SubReportConfig.TYPE_ABSOLUTE); //设置子报表定义的URL类型为绝对路径
src.setURL("C:/abc.rpx"); //设置子报表的路径
subReport.addSubReportConfig(src); //把子报表定义添加到子报表元数据中
rd.setSubReportMetaData( subReport ); //把子报表元数据赋给ReportDefine