jasperReport:Eclipse-Ireport插件安装及基本使用

1.Ireport插件安装

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

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

jasperReport:Eclipse-Ireport插件安装及基本使用_第1张图片

1.2.搜索插件

进入marketplace后,左下角“marketplace”一般默认为“eclipse”,如果不是先切换为“eclipse”,切换完成后在“find”中输入“ireport”进行搜索,找到“jaspersoft studio”单击installed进行安装,之后会进行插件的下载和安装,只需静待安装完成就好了
jasperReport:Eclipse-Ireport插件安装及基本使用_第2张图片

1.3.无法进行在线安装

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

1.4测试插件是否安装成功

在file下选择new,出现如下图所示的选项表示插件安装成功了
jasperReport:Eclipse-Ireport插件安装及基本使用_第5张图片

2.Ireport的基本使用

2.1.打开“outline”功能

首先将eclipse的“outline”功能打开,便于之后的操作
jasperReport:Eclipse-Ireport插件安装及基本使用_第6张图片

2.2.New一个jasper文件

2.2.1.选择想要将jasper文件创建的文件夹位置,选中右键单击选择“new-jasper report”
jasperReport:Eclipse-Ireport插件安装及基本使用_第7张图片
2.2.2.左侧可以选择不同的报表格式,选择合适自己的模板后单击“next”
jasperReport:Eclipse-Ireport插件安装及基本使用_第8张图片
2.2.3.修改文件名后单击“next”
jasperReport:Eclipse-Ireport插件安装及基本使用_第9张图片
2.2.4.在此可以选择你的数据源
这里有两个选项,第一个是创建一个没有检索字段的jasper文件(可以之后添加数据源),第二个选项是添加一个简单的数据库连接,因为我是要将java bean作为报表的检索字段所以选择第一个选项,单击“finish”完成创建jasperReport:Eclipse-Ireport插件安装及基本使用_第10张图片

2.3.报表主要元素介绍

报表主要元素介绍,之后添加的所有元素(单元格、图片、图表等都会在右侧的outline中显示,便于之后的操作)
jasperReport:Eclipse-Ireport插件安装及基本使用_第11张图片

2.4.简单报表设置

一般设计一个简单报表时只需要“title、column header、detail”三个主要元素即可,其他元素可以删除掉(在outline中右键选中需要删除的元素delete,后续如果需要可以再次右键“add band”)
jasperReport:Eclipse-Ireport插件安装及基本使用_第12张图片
jasperReport:Eclipse-Ireport插件安装及基本使用_第13张图片

2.5.进行报表内容设计

2.5.1.对报表页面进行设置,左键单击报表的灰色区域,可以在控制台的“properties”中看到页面的基本属性和参数
jasperReport:Eclipse-Ireport插件安装及基本使用_第14张图片
切换至“advanced”页签中,因为我需要将报表导出为Excel,所以将报表的所有margin设置为0,负责会出现空的列
jasperReport:Eclipse-Ireport插件安装及基本使用_第15张图片
2.5.2.添加报表所需单元格元素,单元格元素主要分为“static text(静态文本单元格)”和“text field(动态文本区域)”
jasperReport:Eclipse-Ireport插件安装及基本使用_第16张图片
2.5.3.首先添加报表的title和column header
文件的title一般是固定的所以需要添加一个“静态文本框”,直接左键将“static text”拖入“title”区域即可,然后双击单元格修改文本内容,也可以在下方的“properties-static text”页签中修改单元格的基本格式(字体样式、字号、对齐方式等),“borders”可以对单元格的边框进行设置;“column header”的设置方式同“title”一样。
报表标题:单元格:高为28px,字体:微软雅黑,18,加粗,左右上下居中
列标题:单元格宽度为一般文本120p,长文本350,高20px;字体:微软雅黑,10,加粗,一般文本左右上下居中,长文本居左上下居中,金额居右上下居中
jasperReport:Eclipse-Ireport插件安装及基本使用_第17张图片
Ps:双击各个元素的空白区域,可以快速调整元素高度为当前单元格占用的高度

3.添加报表正文

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

报表正文需要添加“text field(动态文本区域)”,单击将单元格拖入detail区域中即可
jasperReport:Eclipse-Ireport插件安装及基本使用_第18张图片
Ps:此处需要注意两点
1.将“text adjust”的“cutText”修改为“stretchHeight”动态伸缩高度,否则报表会将超出单元格的文本进行剪切,导致数据错误
2.将“blank When NULL”勾选,这样当数据为“null”是报表总会显示“空值”而不是字符“null”
3.将单元格高度设置为动态高度,防止因为文本过长导致行高不一致,出现错误。
jasperReport:Eclipse-Ireport插件安装及基本使用_第19张图片

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

现在需要给报表添加“动态检索字段”,单击下图图标,在弹出框总选择“java bean”页签
jasperReport:Eclipse-Ireport插件安装及基本使用_第20张图片
单击选择按钮,在新的弹出框中输入className
jasperReport:Eclipse-Ireport插件安装及基本使用_第21张图片
在选项中双击想要添加的类,就会将类属性添加至“字段的待选区域”
jasperReport:Eclipse-Ireport插件安装及基本使用_第22张图片
jasperReport:Eclipse-Ireport插件安装及基本使用_第23张图片

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

为“动态文本区域”添加字段前需要先将要使用的字段添加至报表的“fields”中,选中需要添加的字段点击“add selected field(s)”
jasperReport:Eclipse-Ireport插件安装及基本使用_第24张图片
jasperReport:Eclipse-Ireport插件安装及基本使用_第25张图片

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

双击“动态文本区域”,在弹出页面中双击刚才添加好的字段,点击finish,到此报表基本就设计完成了
jasperReport:Eclipse-Ireport插件安装及基本使用_第26张图片
jasperReport:Eclipse-Ireport插件安装及基本使用_第27张图片
Ps:

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

4.报表导出代码

在Java Project中引入Jasper相关的jar包
jasperReport:Eclipse-Ireport插件安装及基本使用_第28张图片
控制类

		/**
	 	 * 
	 	 * 根据用户所在项目导出项目
	 	 * @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();
			}
		}
	}

你可能感兴趣的:(Ireport,eclipse,ireport,jasperreports,eclipse)