ireport + JasperReport + webwork + ibatis 实现pdf,html,excle报表导出功能
首先利用ireport报表设计工具,生成count.jxml文件,然后编译成.jasper文件,放入项目中
action:
public String generate() throws Exception {
String type = ServletActionContext.getRequest().getParameter("type");
String roomid = ServletActionContext.getRequest().getParameter("id");
String roomname = ServletActionContext.getRequest().getParameter("name");
System.out.println(roomname);
String realPath = ServletActionContext.getServletContext().getRealPath(
"/");
File file = new File(realPath + "/report/Court.jasper");
// String reportFilePath = "D:\\jar\\Court.jasper";
String reportFilePath = file.getPath();
GeneaterService geneater = new GeneaterService();
System.out.println(reportFilePath);
byte[] bytes = null;
if (type.equals("PDF")) {
bytes = geneater.generatePDF(roomid,roomname,reportFilePath);
} else if (type.equals("Excel")) {
bytes = geneater.generateExcel(roomid,roomname,reportFilePath);
} else
bytes = geneater.generateHtml(roomid,roomname,reportFilePath);
HttpServletResponse response = ServletActionContext.getResponse();
ServletOutputStream ouputStream = response.getOutputStream();
if (bytes != null && bytes.length > 0) {
if (type.equals("PDF")) {
response.setContentType("application/pdf");
} else if (type.equals("Excel")) {
response.setContentType("application/vnd.ms-excel");
} else
response.setContentType("text/html");
response.setContentLength(bytes.length);
try {
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
} finally {
if (ouputStream != null) {
try {
ouputStream.close();
} catch (IOException ex) {
}
}
}
}
return null; //如果不返回NULL的话,可能会报异常
}
生成报表方法:
/**
* 导出成PDf格式报表
* @param roomid
* @param roomname
* @param reportFilePath
* @return
*/
public byte[] generatePDF(String roomid,String roomname,String reportFilePath) {
try {
JasperReport jasperReport = (JasperReport) JRLoader
.loadObject(reportFilePath);
JasperPrint jasperPrint = JasperFillManager.fillReport(
jasperReport, new HashMap(), new CourtBeanDataSource(roomid,roomname));
return JasperExportManager.exportReportToPdf(jasperPrint);
} catch (JRException e) {
e.printStackTrace();
}
return null;
}
/**
* 导出成HTML格式报表
* @param roomid
* @param roomname
* @param reportFilePath
* @return
*/
public byte[] generateHtml(String roomid,String roomname,String reportFilePath) {
JRHtmlExporter exporter = new JRHtmlExporter();
ByteArrayOutputStream oStream = new ByteArrayOutputStream();
try {
JasperReport jasperReport = (JasperReport) JRLoader
.loadObject(reportFilePath);
JasperPrint jasperPrint = JasperFillManager.fillReport(
jasperReport, new HashMap(), new CourtBeanDataSource(roomid,roomname));
exporter.setParameter(
JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,
Boolean.FALSE);
exporter
.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter
.setParameter(JRExporterParameter.CHARACTER_ENCODING, "GBK");
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, oStream);
exporter.exportReport();
byte[] bytes = oStream.toByteArray();
return bytes;
} catch (JRException e) {
e.printStackTrace();
}
return null;
}
/**
* 导出成excel格式报表
* @param roomid
* @param roomname
* @param reportFilePath
* @return
*/
public byte[] generateExcel(String roomid,String roomname,String reportFilePath) {
JRXlsExporter exporter = new JRXlsExporter(); // Excel
ByteArrayOutputStream oStream = new ByteArrayOutputStream();
try {
JasperReport jasperReport = (JasperReport) JRLoader
.loadObject(reportFilePath);
JasperPrint jasperPrint = JasperFillManager.fillReport(
jasperReport, new HashMap(), new CourtBeanDataSource(roomid,roomname));
exporter
.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, oStream);
exporter.setParameter(
JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,
Boolean.TRUE);
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,
Boolean.FALSE);
exporter.setParameter(
JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,
Boolean.FALSE);
exporter.exportReport();
byte[] bytes = oStream.toByteArray();
return bytes;
} catch (JRException e) {
e.printStackTrace();
}
return null;
}
list数据源:
public class CourtBeanDataSource implements JRDataSource {
private int index = -1;
// List<Courtcount> list = Tongji.getCourtcount();
List<Courtcount> list = null;
@SuppressWarnings("unchecked")
public CourtBeanDataSource(String roomid,String roomname) {
list = Tongji.getCourtcountByID(roomid,roomname);
}
public Object getFieldValue(JRField field) throws JRException {
Object value = null;
String fieldName = field.getName();
Courtcount court = list.get(index);
int[] counts = court.getCount();
if("courtName".equals(fieldName)) {
value = court.getCourtName();
}else if("year".equals(fieldName)) {
value = court.getYear();
}
else
for(int i = 1; i <= 12; i++) {
if(("count"+i).equals(fieldName)) {
value = counts[i-1];
}
}
return value;
}
public boolean next() throws JRException {
index ++;
return (index < list.size());
}
}
分享到:
相关推荐
JasperReports 是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换 ...它有一个相关的开源工程--IReport,这是一个图形化的辅 助工具,主要用于数据报表设计。...设计、数据填充与数据报表导出。
学习完jasperreports+ireport,给我感觉深刻,不仅掌握了报表开发技术,还掌握了如何在web中生成pdf,xls,rtf文件,以下是jasperreports+ireport开发知识点: 1.字段,变量,参数,传参 2.矢量图,位图 3.超链接,锚 4.数据源,...
该工程下有ssh所需jar包,hicharts报表导出功能所需jar包,以及Jasperreport报表导出所需的jar包,主要是利用Jasperreport实现报表导出功能,可以完整跑通
由于项目需要出图形报表,所以个人做了jasperReport和iReport的技术调查.并且整理成了这个文档,记录了这两个开源工具的使用方法. 文档目录如下: 1.readme 2.iReport上手 3.iReport数据库连接设置 4.iReport连接数据库...
iReport 和 Jasperreport整合开发web报表向导
内含需要的全部jar,注意.jrxml language 选Java 。可以实现简单报表的生成。如有不足,多多交流,谢谢。
iReport 4.0.1 导出Html和PDF报表完整例子
51.打印时经常遇到翻页打印,而且每一页打印的内容不一致,iReport如何实现此功能? 50.iReport中的子报表如何实现根据其上部是否有打印数据而变打印位置? 49.iReport中当单元格中的文字出现换行跨页的情况,如何...
使用开源报表jasperReport,并结合irport前端报表设计器,使用Java程序实现报表的不同格式的导出,包括pdf,excel,html,打印预览等功能,程序包含所需Jar包,并有详细的注释
jasperreport报表开发小结,使用ireport设计报表模板,javabean作为数据源,整合springboot实现在线预览和导出各种格式的报表
NULL 博文链接:https://donald-draper.iteye.com/blog/2301345
jasperreport 设计工具ireport的使用方法、使用步骤和使用是要注意的问题。在设计报表时,如何可以更好的反报表的风格统一
给新手上路,能快速设计出好用好看的模板,然后能跟后台引擎JasperReport结合导出报表
jasperreports导出html,pdf,xls报表,spring-boot加maven,使用jasperreports6.0,不存在中文乱码问题
本例子是运用Struts2和JasperReport整合完成的。修改下数据库,就可以直接运行,导出各种格式的报表了。对初学者很有用。