1.Ireport插件安装

Ireport报表设计有两种图形化实现方式,一种是安装jasper studio软件,另一种是在eclipse中安装Ireport插件,两种实现方式功能是差不多的。(推荐使用插件的方式,因为可以更加方便的将java bean加入至dataset中)

1.1.在eclipse的help下找到“eclipse marketplace…”

1.2.搜索插件

进入marketplace后,左下角“marketplace”一般默认为“eclipse”,如果不是先切换为“eclipse”,切换完成后在“find”中输入“ireport”进行搜索,找到“jaspersoft studio”单击installed进行安装,之后会进行插件的下载和安装,只需静待安装完成就好了

1.3.无法进行在线安装

如果有无法进行在线安装的情况,可以将已经下载好的“ireport插件”导入到eclipse的对应文件下,在进行1.1和1.2的步骤即可解决
ireport插件链接:ireport插件
提取码:e1q3
Ps:找到eclipse的安装路径,将压缩文件解压至对应的文件夹下,执行前两部操作

1.4测试插件是否安装成功

在file下选择new,出现如下图所示的选项表示插件安装成功了

2.Ireport的基本使用

2.1.打开“outline”功能

首先将eclipse的“outline”功能打开,便于之后的操作

2.2.New一个jasper文件

2.2.1.选择想要将jasper文件创建的文件夹位置,选中右键单击选择“new-jasper report”

2.2.2.左侧可以选择不同的报表格式,选择合适自己的模板后单击“next”

2.2.3.修改文件名后单击“next”

2.2.4.在此可以选择你的数据源
这里有两个选项,第一个是创建一个没有检索字段的jasper文件(可以之后添加数据源),第二个选项是添加一个简单的数据库连接,因为我是要将java bean作为报表的检索字段所以选择第一个选项,单击“finish”完成创建

2.3.报表主要元素介绍

报表主要元素介绍,之后添加的所有元素(单元格、图片、图表等都会在右侧的outline中显示,便于之后的操作)

2.4.简单报表设置

一般设计一个简单报表时只需要“title、column header、detail”三个主要元素即可,其他元素可以删除掉(在outline中右键选中需要删除的元素delete,后续如果需要可以再次右键“add band”)

2.5.进行报表内容设计

2.5.1.对报表页面进行设置,左键单击报表的灰色区域,可以在控制台的“properties”中看到页面的基本属性和参数

切换至“advanced”页签中,因为我需要将报表导出为Excel,所以将报表的所有margin设置为0,负责会出现空的列

2.5.2.添加报表所需单元格元素,单元格元素主要分为“static text(静态文本单元格)”和“text field(动态文本区域)”

2.5.3.首先添加报表的title和column header
文件的title一般是固定的所以需要添加一个“静态文本框”,直接左键将“static text”拖入“title”区域即可,然后双击单元格修改文本内容,也可以在下方的“properties-static text”页签中修改单元格的基本格式(字体样式、字号、对齐方式等),“borders”可以对单元格的边框进行设置;“column header”的设置方式同“title”一样。
报表标题:单元格:高为28px,字体:微软雅黑,18,加粗,左右上下居中
列标题:单元格宽度为一般文本120p,长文本350,高20px;字体:微软雅黑,10,加粗,一般文本左右上下居中,长文本居左上下居中,金额居右上下居中

Ps:双击各个元素的空白区域,可以快速调整元素高度为当前单元格占用的高度

3.添加报表正文

3.1.添加“text field(动态文本区域)”,

报表正文需要添加“text field(动态文本区域)”,单击将单元格拖入detail区域中即可

Ps:此处需要注意两点
1.将“text adjust”的“cutText”修改为“stretchHeight”动态伸缩高度,否则报表会将超出单元格的文本进行剪切,导致数据错误
2.将“blank When NULL”勾选,这样当数据为“null”是报表总会显示“空值”而不是字符“null”
3.将单元格高度设置为动态高度,防止因为文本过长导致行高不一致,出现错误。

3.2.添加“动态检索字段”

现在需要给报表添加“动态检索字段”,单击下图图标,在弹出框总选择“java bean”页签

单击选择按钮,在新的弹出框中输入className

在选项中双击想要添加的类,就会将类属性添加至“字段的待选区域”

3.3.将要使用的字段添加至报表的“fields”中

为“动态文本区域”添加字段前需要先将要使用的字段添加至报表的“fields”中,选中需要添加的字段点击“add selected field(s)”

3.4.将字段添加至单元格中

双击“动态文本区域”,在弹出页面中双击刚才添加好的字段,点击finish,到此报表基本就设计完成了


Ps:

  1. Date类型数据格式化处理:new SimpleDateFormat("yyyy-MM-dd").format($F{applyDate})

4.报表导出代码

在Java Project中引入Jasper相关的jar包

控制类

     /*** * 根据用户所在项目导出项目* @author QIANG_HAO* @date 2020-01-08* @param bean            项目bean* @param session     session信息* @return*/@ResponseBody@RequestMapping("/exportTest")public DataGrid exportTest(ArchiveBean bean, HttpServletResponse response,HttpSession session){SessionInfo sessionInfo = (SessionInfo) session.getAttribute("sessionInfo");try {bean.setPermission(sessionInfo.getPermisson());bean.setOrgId(sessionInfo.getOrgId());bean.setUserId(sessionInfo.getUserId());PageParams pageParams = new PageParams();pageParams.setPage(0);pageParams.setRows(10000); DataGrid rows = archiveService.queryList(bean, pageParams);JasperReportCriteria criteria = new JasperReportCriteria();criteria.setJrxmlName("test");// 模板名 if (rows != null && rows.getRows() != null && rows.getRows().size() > 0){criteria.setResult(rows.getRows()); }criteria.setJrxmlPath("/report/project");// 路径criteria.setAutoBuildJasper(false); criteria.setSheetName("项目归档信息");criteria.setReportFileName("项目归档信息");// 文件名criteria.setType(JasperReportCriteria.REPORT_TYPE_MSEXCEL);// 文件类型ReportExporter.exportReport(criteria, response);} catch (Exception e) {log.error("查询项目归档信息异常",e);}return null;}

导出方法实现

 /*** 导出报表* @param criteria - JasperReport条件设定DTO* @param response - HttpServletResponse* @return 导出是否成功* @throws Exception*/@SuppressWarnings({ "rawtypes", "unchecked" })public static boolean exportReport(JasperReportCriteria criteria, HttpServletResponse response) throws Exception {log.debug("Enter method ReportExporter.exportReport()");if (criteria == null) {return false;}ByteArrayOutputStream outputStream = null;ServletOutputStream oStream = null;try {JasperReport jasperReport = null;// 需要jrXml文档的方式if (criteria.isAutoBuildJasper() == false) {String jrXml = criteria.getJrxmlPath() + criteria.getJrxmlName() + JasperReportCriteria.JRXML_EXT_NAME;InputStream inputStream = ReportExporter.class.getResourceAsStream(jrXml);JasperDesign design = JRXmlLoader.load(inputStream);// 编译报表(.jrxml -> .jasper)jasperReport = JasperCompileManager.compileReport(design);}// 填充报表JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, criteria.getParameters(), new JRBeanCollectionDataSource(criteria.getResult()));outputStream = new ByteArrayOutputStream();JRAbstractExporter exporter = null;if (StringUtils.hasText(criteria.getType()) == false) {exporter = new JRPdfExporter();SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();exporter.setConfiguration(configuration);} else if (criteria.getType().equals(JasperReportCriteria.REPORT_TYPE_MSWORD)) {exporter = new JRRtfExporter();SimpleRtfReportConfiguration configuration = new SimpleRtfReportConfiguration();exporter.setConfiguration(configuration);} else if (criteria.getType().equals(JasperReportCriteria.REPORT_TYPE_MSEXCEL)) {exporter = new JRXlsxExporter();SimpleXlsxReportConfiguration configuration = new SimpleXlsxReportConfiguration();configuration.setOnePagePerSheet(true);configuration.setDetectCellType(true);configuration.setCollapseRowSpan(false);configuration.setSheetNames(new String[]{criteria.getSheetName()});exporter.setConfiguration(configuration);} else {exporter = new JRPdfExporter();SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();exporter.setConfiguration(configuration);}exporter.setExporterInput(new SimpleExporterInput(jasperPrint));exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(outputStream));exporter.exportReport();byte[] bytes = outputStream.toByteArray();response.setContentType(JasperReportCriteria.getContentTypeMap().get(criteria.getType()));response.setCharacterEncoding("iso8859-1");String fileName = URLEncoder.encode(criteria.getReportFileName(), JasperReportCriteria.CHARACTER_ENCODING) + JasperReportCriteria.getReportExtNameMap().get(criteria.getType());fileName = new String(fileName.getBytes("UTF-8"), "iso-8859-1");response.setHeader("Content-disposition", "attachment;filename="+ fileName);response.setContentLength(bytes.length);outputStream.close();oStream = response.getOutputStream();oStream.write(bytes, 0, bytes.length);oStream.flush();oStream.close();log.debug("Exit method ReportExporter.exportReport()");return true;} catch (Exception e) {log.error("Exception: method ReportExporter.exportReport() - " + e, e);return false;} finally {if (oStream != null) {oStream.close();}if (outputStream != null) {outputStream.close();}}}

jasperReport:Eclipse-Ireport插件安装及基本使用相关推荐

  1. Eclipse FindBugs插件安装与使用

    前言: 白盒测试中的静态检查一般是检查编码标准规范,错误列表.编码规范往往团队会根据自己的经验和风格进行设置一些规范.现在很多IDE工具都会在编辑代码的时候实时的提醒是否符合代码风格.错误列表,一般是 ...

  2. eclipse svn插件安装_Visual SVN和Tortoise SVN的安装简单使用汉化

    学习之前我也问了很多IT群,了解一下是否还在用,还是都是Git!因为我搜索一些资料,在2019段寥寥无几!不过有群友反应,反正技多不压身,都学一学嘛!同时也想在这片方面给大家更新一下资料!搜百度,安装 ...

  3. eclipse + pydev插件安装后不显示的问题

    之前公司电脑eclipse安装pydev    是按照网上的例子来, 直接在eclipse installation software安装,  但是eclipse给的是5.6版本的, 但是我的jdk是 ...

  4. SVN安装,SVN服务搭建与eclipse里插件安装

    2019独角兽企业重金招聘Python工程师标准>>> 关于SVN与Git的比较,还是不做比较了吧. SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS ...

  5. eclipse lombok插件安装_Eclipse-安装Freemarker插件

    引言 我们在使用 Eclipse 开发 Java Web 程序时会使用 Freemarker 模板引擎,以帮助我们快速.便捷和结构化的创建页面,但是 Eclipse 显示生成的*.ftl文件如同在普通 ...

  6. eclipse常用插件安装

    打开资源文件所在目录 EasyExplorer 下载:http://sourceforge.net/projects/easystruts/ 直接拷贝到%ECLIPSE_HOME%\plugins 或 ...

  7. eclipse lombok插件安装_如果你是Java架构师或项目经理,项目技术会允许使用Lombok吗?

    Lombok Lombok项目是一个Java库,通过注解,来消除Java类中的大量样板代码.比如常见的Getter&Setter.toString().构造函数等等. 看个例子,以前我们构建一 ...

  8. eclipse lombok插件安装_便捷开发,解放双手,lombok插件

    lombok是一款Java实用工具,可用来帮助开发人员消除Java的冗长,尤其是对于简单的Java对象(POJO). 在实际开发中,是不是发现经常需要变更model类.vo类.dto等一些实体类,随便 ...

  9. linux eclipse svn插件安装,Linux上Eclipse安装SVN插件和安装JavaHL

    在Eclipse上安装svn插件有两种选择,一种是Subclipse,一种是Eclipse Subversion.前者是svn的官网eclipse插件,后者是eclipse的官方svn插件,具体有什么 ...

最新文章

  1. git stash的用法
  2. java实现图片对比功能_Java 照片对比功能的实现
  3. 为什么读博士的人越来越多?博士毕业难度不是越来越大吗?
  4. RSA key format is not supported
  5. Kafka SCRAM和PLAIN实战
  6. c++ 线程什么时候run_阿里后端Java面试题:启动线程是start()还是run()?为什么?...
  7. 20162314 《Program Design Data Structures》Learning Summary Of The First Week
  8. ThinkPhp知识大全(非常详细)
  9. 企业数字化新战场:低代码究竟是“毒瘤”还是“良药”?
  10. 解决使用七牛CDN导致AJAX评论报错{“ERROR”:”GET FROM IMAGE SOURCE FAILED: E405″}
  11. 计算机领域中的token的意思
  12. 应届生前端上班很吃力怎么办?
  13. 【聚类算法】MiniBatchKMeans算法
  14. 智能扫地机器人好用吗?行业排名TOP5扫地机器人推荐
  15. 美的java面试经验
  16. 中山大学计算机在职研究生分数线,中山大学在职研究生的考试分数线是多少?...
  17. MSYS2开发环境搭建
  18. 求最大公约数和最小公倍数算法
  19. 泰安学业水平考试计算机试卷,山东省泰安市2020年初中物理学业水平考试试题【含答案】...
  20. 进入新职场,软件测试工程师电脑安装的必备软件

热门文章

  1. GD32VF103_CAN发送
  2. 增量学习二十年发展如何?用一篇综述看懂增量学习
  3. 等额本息和等额本金计算
  4. Java 旋转、翻转图片工具类(附代码) | Java工具类
  5. 如何在Windows server 2012中设置文件夹共享和访问
  6. 上拉电阻的作用原理_电容触摸屏原理以及敦泰TP FT5X06驱动
  7. jsp页面适应手机屏幕_Jsp编写的页面如何适应手机浏览器页面
  8. vim tutorial 101 hacks(三)
  9. Unity3d地图制作之模型高光
  10. 万兴剪刀手去水印教程_万兴神剪手怎么去水印 神剪手去水印操作详解