首页 > 编程知识 正文

java报表导出工具,java报表系统

时间:2023-05-03 22:28:02 阅读:141086 作者:3722

配置Jaspersoft studio工具(报告生成工具)开发PDF

设置JasperReport导出PDF

JasperReport生命周期:

在JasperReports中生成PDF报告需要三个阶段,称为JasperReport生命周期。 这些阶段如下。

设计(Design )阶段、模板定义(在工具Jaspersoft studio中定义模板) ) ) ) )。

执行阶段,模板数据(填充) )。

输出阶段,展示。 把模板和数据一起展示

JasperReport执行流程:

java集成jasper模板文件

jasper的PDF模板由Jaspersoft studio工具生成,但需要注意。

1 .记住保存模板(ctrl s )

2 .修改模板字体和idea支持的字体,以便可以显示中文

要将配置导入idea项目的资源目录中,请将文件导入到D:Astudy软件语言Javajava的项目 13.saax-expources-export

步骤

1 .在工具中生成并编译PDF模板,并将编译的. jsaper文件复制到idea项目中

2 .编写代码,实现数据填充

注:有三种输入数据的方法

方式一、参数映射填充

//*

演示地图参数的输入

* @param id

* @throws Exception

*/

@requestmapping(/exportpdf ) )。

publicvoidexportpdf(stringid ) throws Exception {

//1 .读取模板文件(.jasper )

inputstream inputstream=session.getservletcontext ().getresourceasstream ('/jasper/test 02 _ map.jasper ' );

//2 .用数据填充模板

//*

*参数1 :需要输入的模板文件输入流程

*参数2 :地图参数

*参数Jasper数据源

*/

进行//map参数的嵌入

HashMap map=new HashMap (;

//模板的参数名称和Map的密钥一致

map.put('username ','小苍');

map.put(email,) xc@itcast.cn );

map.put('companyname ','字节行驶');

map.put (深度,“视频组”);

jasperprintprint=jasperfillmanager.fill report (inputstream,map,new JREmptyDataSource () );

//3 .导出pdf文件

//*

*参数1 :封装了模板数据的JasperPrint对象

*参数2 :输出位置,response.getOutputStream ()//输出显示在页面上

*/

jasperexportmanager.exportreporttopdfstream (print,response.getOutputStream );

}

方法2、输入JDBC数据源

@Autowired

私有数据源数据源;

//*

演示输入JDBC数据源参数

* @param id

* @throws Exception

*/

@requestmapping(/exportpdf ) )。

publicvoidexportpdf(stringid ) throws Exception {

//1 .读取模板文件(.jasper )

inputstream inputstream=session.getservletcontext ().getresourceasstream ('/jasper/test 03 _ JDBC.jasper ' );

//2 .用数据填充模板

jasperprintprint=jasperfillmanager.fill report (inputstream,new HashMap ),dataSource.getConnection );

>//3.导出PDF文件

/**

* 参数一:封装好模板好数据的JasperPrint对象

* 参数二:输出的位置

*/

JasperExportManager.exportReportToPdfStream(print,response.getOutputStream());

}

方式三,JavaBean数据源填充

/**

* 演示List集合(JavaBean)数据源导出

* @param id

* @throws Exception

*/

@RequestMapping("/exportPdf")

public void exportPdf(String id) throws Exception {

//1.读取模板文件(.jasper)

InputStream inputStream = session.getServletContext().getResourceAsStream("/jasper/test04_list.jasper");

//2.把数据填充到模板

List list = new ArrayList();

//注意: 必须遵守的规则:List的JavaBean的每个属性名称 和 模板的Filed名称 一致

for(int i=0;i<10;i++){

User user = new User();

user.setUserName("小苍"+i);

user.setEmail("xc+"+i+"@itcast.cn");

user.setCompanyName("字节跑动");

user.setDeptName("视频组"+i);

list.add(user);

}

//从而得到数据源

JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(list);

JasperPrint print = JasperFillManager.fillReport(inputStream, new HashMap<>() ,dataSource);

//3.导出PDF文件

/**

* 参数一:封装好模板好数据的JasperPrint对象

* 参数二:输出的位置

*/

JasperExportManager.exportReportToPdfStream(print,response.getOutputStream());

}

Map 参数填充一般用在非表格(table)数据填充(关键是:只有一条数据)

数据源 参数填充一般用在表格(table)数据填充(关键是:n行数据)

数据源  填充数据分为:JDBC数据源填充数据(数据库连接)、JavaBean填充数据(list集合

对于JDBC数据源,是在做PDF模板的时候就链接了数据库获取数据,再在代码里通过数据源创建连接对象从而填充

对于JaveBean数据源(又称为List集合填充),只是在PDF模板中填充空的数据,真正的数据还是在代码中填充

其实在java代码中无非就是三步

1.读取模板文件(.jasper)  InputStream inputStream = session.getServletContext().getResourceAsStream(“/jasper/test04_list.jasper(webapp下面的文件地址)”);

2.把数据填充到模板

JasperPrint print = JasperFillManager.fillReport      (inputStream,         Map集合 ,            dataSource数据源);

填充就是在用数据源还是map集合的不同而分出的3中方法

如果是用了map集合,那数据源就得为空,JasperPrint print = JasperFillManager.fillReport      (inputStream,         Map集合 ,           new JREmptyDataSource());

如果用了数据源,那map集合就得为空,JasperPrint print = JasperFillManager.fillReport      (inputStream,         new HashMap<>() ,        数据源);

在区分,①用JDBC数据源,那就是JasperPrint print = JasperFillManager.fillReport(inputStream, new HashMap<>() ,dataSource.getConnection());

记得在外面写上   @Autowired

private DataSource dataSource;

②用JavaBean数据源,那就是

//从而得到数据源

JRBeanCollectionDataSource    dataSource       = new JRBeanCollectionDataSource(list);

JasperPrint print = JasperFillManager.fillReport   (inputStream,        new HashMap<>() ,           dataSource);

3.pdf文件的显示或导出

①在浏览器显示

/** * 参数一:封装好模板好数据的JasperPrint对象 * 参数二:输出的位置 */

JasperExportManager.exportReportToPdfStream(       print,             response.getOutputStream());

②下载

* 参数:封装好模板好数据的JasperPrint对象

* 参数二:输出的位置

//设置下载框响应头

response.setHeader(“Content-Disposition”,”attachment;filename=export.pdf”);  /参数一是响应头,参数而,是附件和下载后的文件名

JasperExportManager.exportReportToPdfStream(        print,         response.getOutputStream());  //这一步同上

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。