加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

jasper 小试牛刀(一)

发布时间:2020-12-14 16:55:09 所属栏目:大数据 来源:网络整理
导读:最近刚好用到jasper 4.0 做关于报表的开发 , 随及就写点东西, 请各位大侠不要泼油哈………… ? jasper 4.0 和以前版本不太相同,据说是重构了一下。 这里主要说下jasper 4.0 的用法 以及和ireport (图形化工具) 的联合使用 ? 1) 在ssh项目 中, 很多人

最近刚好用到jasper 4.0 做关于报表的开发 , 随及就写点东西, 请各位大侠不要泼油哈…………

?

jasper 4.0 和以前版本不太相同,据说是重构了一下。 这里主要说下jasper 4.0 的用法 以及和ireport (图形化工具) 的联合使用

?

1) 在ssh项目 中, 很多人都习惯将 jasper 的jar包 全部导入进去,但是这样有时会出现问题(jar 包冲突,或者是jar包 重复)

?

??????jasperreports-4.0.1.jar ,

?????? jasperreports-applet-4.0.1.jar,

? ? ?? jasperreports-fonts-4.0.1.jar,?

??????jasperreports-javaflow-4.0.1.jar

这4个jar包就是jasper核心的jar包了,但是在导入的时候,(没特殊情况)前面三个就ok了,不然很容易就出现 多个component? 我也是找了很久才找到的,当然jasper 的配套包 像 (groovy,itext,等 )groovy-all-1.7.5.jar,itext-asian.jar,commons 之类的 是必须的。

但是这些包 的版本必须要配对 特别是 json 包的版本,groovy的版本,groovy的已经写出来了,对于json 当然是最近版本比较好,目前我用jasper4.0? 用到的json包是 json-lib-2.3-jdk15.jar ,jsonplugin-0.33.jar(最低的json 2.0 还没考证过)? 。对于和struts 的结合则是用的? struts2-jasperreports-plugin-2.1.6.jar

?

2)ireport 是jasper图形化的工具,通过它可以画出很多复杂的报表格式,以及方便的链接数据源(就是取得数据) ,这里具体的用法就不做介绍,先看一个ireport制作的报表样式:

?

唯一的一点就是:

???? 如果报表要导出成pdf等文件的话,在 制作 jrxml 文件的时候就要注意到中文格式的问题.

???? 在有可能出现汉字的地方,要对那个 textfield 进行字体设定,具体的设定就在 “属性” 里面 :

????????? 详细如下: font name 通常就采用宋体就ok ,比较通用,也不会容易出错 ,(TTF 的也可以)

??????????????????????????????pdf embeded 选项打上勾 ,在 pdf encoding 选项选择 UniGB-UCS2-H (Chinese Simplified)?

??????????????????????????????在pdf font name is now ...? 选项选择?? STSong-Light? 。这样就屏蔽了中文pdf的乱码问题

?

下面贴个引用小例子:

(这个是生成报表文件并下载的)

File reportFile =
???? ??? newFile(ServletActionContext.getServletContext().?????????????
??? ???getRealPath("/report/"+donwloadFileName+".jasper"));
??? ???? String fileDir =reportFile.getAbsolutePath().substring(0,reportFile.getAbsolutePath().lastIndexOf(fileSeparator)+1);
??? ??? HashMap parameter = new HashMap();
??? ??? System.out.println(fileDir);
??? ???
??? ??? parameter.put("STRWHERE"," and A.unit_id='23100' and A.stryear='2011' and A.strmonth='04'");
??? ??? parameter.put("SUBREPORT_DIR",fileDir);
??? ??? try{
??? ??? Connection con = getConnection();
??? //??? JasperReport jasperReport =JasperCompileManager
??? //??? ??? ???.compileReport(fileDir+"电费交费报表.jrxml");
??? ??? JasperPrint jasperPrint =JasperFillManager.fillReport(reportFile.getPath(),
??? ??? ??? ???parameter,con);
??? ???JasperExportManager.exportReportToPdfFile(jasperPrint,
??? ??? ???fileDir+donwloadFileName+".pdf");
??? ??? }catch(Exception e){
??? ??? ??? e.printStackTrace();
??? ??? ??? return"false";
??? ??? }
??? ???
??? ??? //?? 正式的文件下载
??? ??? System.out.println("get in");
??? ??? File reportFiles =null;
??? ??? try{

????????? // 这里是得到文件的具体路径
??? ??? ??? filePath =ServletActionContext.getServletContext().?????????????
??? ??? ??? ?getRealPath("/report/"+donwloadFileName+".pdf");
??? ???? ??? reportFiles =new File(filePath);

???????? // 下载的文件名
??? ???? ??? donwloadFileName= donwloadFileName+".pdf";
??? ??? }catch(Exception e){
??? ??? ??? success = false;
??? ??? ??? e.printStackTrace();
??? ??? ??? return"false";
??? ??? }

?

?

struts 配置文件:

??? <!-- 报表的导出-->
??? ??? <action name="downLoad"class="downLoadJasperAction" method="downLoad">
??? ???
??? ????? <resultname="success" type="stream">
??? ??? ??? ???<param name="contentType">application/octet-stream;charset=ISO8859-1</param>
??? ??? ??? ???<param name="inputName">targetFile</param>
??? ??? ??? ???<paramname="contentDisposition">attachment;filename="${donwloadFileName}"</param>
??? ??? ??? ???<param name="bufferSize">4096</param>
??? ??? </result>
??? ?? </action>

?

----------------------------------------------------------------------------------------------------------------------------------------------------

自己第一次写技术性的东西,希望能于己于人有点好处

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读