jasperreport报表工具的使用

折腾了一天,终于是弄明白了一点报表工具的用法,借鉴的是youtube上的视频,非常感谢国外的大神,大神录的视频全程不说话,只是录了操作画面,我就照着视频理解敲代码,终于是完成了我所想的效果。

设计报表用的是 TIBCO Jaspersoft Studio,用这个生成jrxml文件,然后在项目中使用,我对报表工具的理解大概就是模块化显示一个PDF,所谓模块化大概就是像医院给的收据似的,各个已经有字段对齐从数据库里提取的字段,用于打印和显示。

毫无思路的我,先是自己查资料,咨询同事,各种尝试,终于在youtube上找到了我想要的教程。

话不多说,先上代码

@Controller
@RequestMapping("/report")
public class ReportTest {
	@Autowired
	private AddressDao addressDao;

	@RequestMapping(value="/v2",method=RequestMethod.GET)
	public void  preTest(/*HttpServletRequest request,*/ HttpServletResponse response) {
		Address a1=addressDao.queryAddByID(2);
		try{
			List<Map<String,String>> dataSource=new ArrayList<Map<String,String>>();;
			Map<String,String> m=new HashMap<String,String>();
			m.put("add_name", a1.getAddName());
			m.put("add_content", a1.getAddContent());
			m.put("add_phone_owner", a1.getAddPhoneOwner());
			m.put("add_phone_number",a1.getAddPhoneNumber());
			dataSource.add(m);
			JRDataSource jrDataSource=new JRBeanCollectionDataSource(dataSource);
			InputStream input=new FileInputStream(new File("L:/mygit/java/reporttest/src/main/webapp/WEB-INF/report/v1/DemoReport1.jrxml"));
			JasperReport jasperReport=JasperCompileManager.compileReport(input);
			JasperPrint jasperPrint=JasperFillManager.fillReport(jasperReport,null,jrDataSource);
			JasperExportManager.exportReportToPdfStream(jasperPrint,response.getOutputStream());
			response.getOutputStream().flush();
			response.getOutputStream().close();
		}catch(Exception e){
			e.printStackTrace();
		}
		return ;
	}
}

前面是形成一串二维数据,其中键名和jasper里的字段一致,接下来将这二维数据 用JRBeanCollectionDataSource保存,接下来读取jrxml文件,根将数据填写到jrxml文件里用JasperFillManager.fillReport 这个方法,填写后得到了JasperPrint,然后将这个参数输出到页面,页面的显示形式为PDF,而输出的方式是JasperExportManager.exportReportToPdfStream 这个方法,输出到response.getOutputStream()里,页面完成显示。清空缓冲器,关闭流。

其中报表文件的设计是决定文件显示是否美观的关键,读取时我使用的是绝对路径,在项目里我会使用相对路径。输出到页面的方式比较隐晦,导致我一直不是很理解,问了很多人,也困惑了很久。

在maven工程里引入依赖,是在https://mvnrepository.com/ 里搜到的,结果如下

<dependency>
		<groupId>net.sf.jasperreports</groupId>
		<artifactId>jasperreports</artifactId>
		<version>6.7.0</version>
</dependency>

总算完成了,其实还遇见了一个坑,就是Jaspersoft Studio不支持显示中文,解决办法是引入中文字体,具体操作CSDN里有很多人有解决办法,我就不转载了。

猜你喜欢

转载自blog.csdn.net/Caeser110/article/details/88081732