Ireport6.3.1集成说明文档

来源:互联网 发布:conerstone for mac 编辑:程序博客网 时间:2024/06/07 18:09

集成Ireport6.3.1所需依赖包:

jasperreports-fonts.jar(jar当前字体:DejaVu Sans、DejaVu Serif、DejaVu Sans Mono、SansSerif、&#23435;&#20307;(宋体)、&#24494;&#36719;&#38597;&#40657;(黑体)、C39HrP60DlTt(条形码),如果需要特殊字体则需要手动配置到字体jar中,后续文档有描述)Maven依赖包:        <dependency>            <groupId>net.sf.jasperreports</groupId>            <artifactId>jasperreports</artifactId>            <version>6.3.1</version>        </dependency>        <dependency>            <groupId>org.codehaus.groovy</groupId>            <artifactId>groovy-all</artifactId>            <version>2.0.1</version>        </dependency>        <dependency>            <groupId>com.lowagie</groupId>            <artifactId>itext</artifactId>            <version>2.1.7</version>        </dependency>        <dependency>            <groupId>com.itextpdf</groupId>            <artifactId>itext-asian</artifactId>            <version>5.2.0</version>        </dependency>        <dependency>        <groupId>commons-beanutils</groupId>        <artifactId>commons-beanutils</artifactId>        </dependency>        <dependency>            <groupId>commons-logging</groupId>            <artifactId>commons-logging</artifactId>            <version>1.1</version>        </dependency>        <!--对应项目中lib文件夹下jasperreports-fonts.jar-->        <dependency>            <groupId>net.sf.jasperreports.jasperreports</groupId>            <artifactId>fonts</artifactId>            <version>1.0</version>            <scope>system</scope>            <systemPath>${project.basedir}/lib/jasperreports-fonts.jar</systemPath>        </dependency>        <dependency>            <groupId>commons-collections</groupId>            <artifactId>commons-collections</artifactId>            <version>3.2.1</version>        </dependency>        <dependency>            <groupId>commons-digester</groupId>            <artifactId>commons-digester</artifactId>            <version>2.1</version>        </dependency>        <!--ireport导出excel所需jar-->        <dependency>            <groupId>org.apache.poi</groupId>            <artifactId>poi-examples</artifactId>            <version>3.10.1</version>        </dependency>        <dependency>            <groupId>org.apache.poi</groupId>            <artifactId>poi-excelant</artifactId>            <version>3.10.1</version>        </dependency>        <dependency>            <groupId>org.apache.poi</groupId>            <artifactId>poi-ooxml</artifactId>            <version>3.10.1</version>        </dependency>        <dependency>            <groupId>org.apache.poi</groupId>            <artifactId>poi-ooxml-schemas</artifactId>            <version>3.10.1</version>        </dependency>        <dependency>            <groupId>org.apache.poi</groupId>            <artifactId>poi-scratchpad</artifactId>            <version>3.10.1</version>        </dependency>

Ireport主子模板介绍:

模板初次接触着请参考《java报表开发设计》学习。
主子表模板设计介绍:
Stp1:右侧工具栏选择“Subreport”放置到Detail1中如图1所示
这里写图片描述
图1
Stp2:选择Just create the subreprot element单击next如图2
这里写图片描述
图2
Stp3:选择Don’t use any connection or Data Source如图3
这里写图片描述
图3
Stp4:单击“Finish”如图4
这里写图片描述
图4
Stp5:调整Subreport框大小如图5
这里写图片描述
图5
注意:
1.subreport框的宽度和模板的宽度保持一直,放置位置置左。
2.在subreport设置中Print When中请勾选Detail Overflows。(允许打印元素以页或列,如果band不能被打印当前的列或页)
Stp6:在同一个项目中再新建一个模板子报表模板(也可在图2中选择Create a new report,步骤一样过程就不再赘述)。新建好如图6所示:
这里写图片描述
图6
Stp7:保留Detail1,删除其余部分如图7所示:
这里写图片描述
图7
Stp8:在右下角page format中Edit Page Format如图8所示:
这里写图片描述
图8
Stp9:设置子模板的detail1高度和主表中detail1的高度保持一直如图9所示:
这里写图片描述
图9
Stp10:将子表对应的model添加到Fields中如图10
这里写图片描述
图10
Stp11:将字段添加到子报表中如图11
这里写图片描述
图11
Stp12:回头再看主报表中,点击facheqingdan中parameters右键新建SUBREPOTY_DIR如图12
这里写图片描述
图12
Stp13:设置SUBREPOTY_DIR 的Default Value Expression如图13所示:
注意:图2.3中配置的路径为模板所在路径。(根据这个路径找到子模板)
这里写图片描述
图13
Stp14:选中主报表中的subreport编辑Connection Expression如图14所示:
这里写图片描述
图14
Stp15:配置如图15所示:
这里写图片描述
图15
至此子报表模板设计完成。

前台代码:

1.导出PDF和Excel前台调用:location.href=调用controller方法路径;2.打印预览前台调用:window.open(调用controller方法路径);3.打印前台调用:Ftl:<iframe style="display:none" id="printIframe"></iframe>Js:$("#printIframe").attr("src", 调用controller方法路径);$("#printIframe")[0].contentWindow.print();调用controller方法路径:encodeURI(ctx+"service/ireportExport?type="+type+"&serviceName=OmsAttemper_btnItemsList&exportName=fcqd&tempName="+tempName+"&queryParams="+omsAttemperId+","+attemperNo+"&attemperNo="+attemperNo);(参考url,encodeURI是一个转义方法,根据实际情况使用)

后台Controller代码:

/**     *      *@Title:  ireportExport     *@Description: ireport报表模块     *@Author: kpg     *@Since: 2017年4月14日下午3:59:30     *@param request     *@param response     *@param title 导出文件名     *@param header 导出表头     *@param queryInfo 查询条件     *@param serviceName fros配置方法     *@throws Exception     */    @SuppressWarnings("unchecked")    @RequestMapping(value="/ireportExport", method={RequestMethod.POST,RequestMethod.GET})    public void ireportExport(Model model,HttpServletRequest request,HttpServletResponse response) {        try {            String type = request.getParameter("type");            String exportName = request.getParameter("exportName");            if(ChineseUtill.luanma(exportName)){                exportName = new String(exportName.getBytes("ISO8859-1"), "UTF-8");            }            String queryParams = request.getParameter("queryParams");            if(ChineseUtill.luanma(queryParams)){//校验是否乱码                queryParams = new String(queryParams.getBytes("ISO8859-1"), "UTF-8");            }            String serviceName = request.getParameter("serviceName");            ArrayList<Object> dataList=(ArrayList<Object>) servicesFacadeManager.getData(queryParams,serviceName);            String tempName = request.getParameter("tempName");            if(ChineseUtill.luanma(tempName)){//校验是否乱码                tempName = new String(tempName.getBytes("ISO8859-1"), "UTF-8");            }            String attemperNo = request.getParameter("attemperNo");            if(attemperNo!=null && !attemperNo.equals("") && ChineseUtill.luanma(attemperNo)){                attemperNo = new String(attemperNo.getBytes("ISO8859-1"), "UTF-8");            }            Map parameters = new HashMap();            String tempPath= request.getSession().getServletContext().getRealPath("/static/ireport/Jasper")+"/";//子模板对应路径            parameters.put("SUBREPORT_DIR", tempPath);            String imagePath= request.getSession().getServletContext().getRealPath("/static/img")+"/";//图片对应路径            parameters.put("IMAGE_DIR", imagePath);            if(attemperNo!=null && !attemperNo.equals("")){                QRCodeUtil.zxingCodeCreate(attemperNo, 60, 60, imagePath+"erweima.png", "png");                parameters.put("ERWEIMA_DIR", imagePath);            }            //封装reportList中数据作为数据源            JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(dataList);            JasperPrint jasperPrint = null;            jasperPrint = JasperFillManager.fillReport(tempPath+tempName, parameters, ds);            if(type.equals("excel")){//导出excel                //设置导出文件格式                response.setContentType("application/vnd.ms-excel");                exportName = new String(exportName.getBytes("GBK"),"ISO8859_1");                //设置导出文件名称                response.setHeader("Content-Disposition", "attachment;filename="+exportName+".xls");                //导出excel,替换为这段                JRXlsExporter exporter = new JRXlsExporter();                exporter.setExporterInput(new SimpleExporterInput(jasperPrint));                exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(response.getOutputStream()));                SimpleXlsReportConfiguration configuration = new SimpleXlsReportConfiguration();                configuration.setWhitePageBackground(false);                configuration.setDetectCellType(true);                exporter.setConfiguration(configuration);                exporter.exportReport();            }else if(type.equals("pdf")){//导出PDF                //设置导出文件格式                response.setContentType("application/pdf");                //设置导出文件名称                exportName = new String(exportName.getBytes("GBK"),"ISO8859_1");                response.setHeader("Content-Disposition", "attachment;filename="+exportName+".pdf");                //导出excel,替换为这段                JRPdfExporter exporter = new JRPdfExporter();                exporter.setExporterInput(new SimpleExporterInput(jasperPrint));                exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(response.getOutputStream()));                SimplePdfReportConfiguration configuration = new SimplePdfReportConfiguration();                exporter.setConfiguration(configuration);                exporter.exportReport();            }else if(type.equals("show")){//预览//                JasperViewer.viewReport(jasperPrint, false);                //设置导出文件格式                response.setContentType("application/pdf");                //设置导出文件名称//                exportName = new String(exportName.getBytes("GBK"),"ISO8859_1");                response.setHeader("Content-Disposition", "inline;filename="+exportName+".pdf");                //导出excel,替换为这段                JRPdfExporter exporter = new JRPdfExporter();                exporter.setExporterInput(new SimpleExporterInput(jasperPrint));                exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(response.getOutputStream()));                SimplePdfReportConfiguration configuration = new SimplePdfReportConfiguration();                exporter.setConfiguration(configuration);                exporter.exportReport();            }else if(type.equals("print")){//打印                //设置导出文件格式                response.setContentType("application/pdf");                //设置导出文件名称//                exportName = new String(exportName.getBytes("GBK"),"ISO8859_1");                response.setHeader("Content-Disposition", "inline;filename="+exportName+".pdf");                //导出excel,替换为这段                JRPdfExporter exporter = new JRPdfExporter();                exporter.setExporterInput(new SimpleExporterInput(jasperPrint));                exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(response.getOutputStream()));                SimplePdfReportConfiguration configuration = new SimplePdfReportConfiguration();                exporter.setConfiguration(configuration);                exporter.exportReport();            }        } catch (Exception e) {            logger.error(e.getMessage(), e);        }    }

补充添加字体:
用winrar解压jasperreports-fonts.jar包,解压后如图16所示:
这里写图片描述
图16
E:\jasperreports-fonts\net\sf\jasperreports\fonts\fonts.xml中配置所需字体,配置格式按照xml中已有字体格式进行配置。
E:\jasperreports-fonts\net\sf\jasperreports\fonts\dejavu目录下放.TTF格式的字体文件
前两部完成后返回目录E:\jasperreports-fonts进行重新打包
在地址栏输入cmd回车如图17
这里写图片描述
图17
输入命令“jar cvf jasperreports-fonts.jar *”如图18所示。生成项目所需字体jar包,如图19所示:
这里写图片描述
图18
这里写图片描述
图19

模板下载地址
JaspersoftStudio-6.3.1.final-windows下载

原创粉丝点击