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());
}
}
分享到:
相关推荐
3. 报表导出:使用 JasperExportManager 将填充后的报表导出为所需格式,如 PDF、HTML 或 Excel。 通过理解和学习这些步骤,你可以掌握JasperReport和IReport的基本使用,从而在实际项目中高效地生成各类报表。
3. **报表导出**:将生成的报表导出为所需的格式,例如PDF、Excel、HTML等。 #### 三、JasperReport核心特性 1. **数据源支持**:JasperReport支持多种数据源,包括但不限于数据库连接、Java Bean、XML文件、Java...
JasperReports 是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换 ...它有一个相关的开源工程--IReport,这是一个图形化的辅 助工具,主要用于数据报表设计。...设计、数据填充与数据报表导出。
JasperReport和iReport的结合使用,为开发者提供了一种高效、灵活的方式来设计和生成复杂的报表。本文将深入探讨如何利用这两个工具进行WEB开发。 JasperReport是一款开源的Java报表库,它支持多种数据源,如数据库...
在JasperReport 2.0.2和iReport 2.0.2版本中,我们可以实现多种功能,包括字段、变量、参数的管理,图像(矢量图和位图)的使用,超链接和锚点的创建,数据源的配置,国际化支持,脚本编写,子报表以及图表的展示,...
通过以上内容的总结,我们可以了解到JasperReport+iReport报表工具的详细开发手册主要涉及了报表工具的安装配置、报表设计与编辑、数据源配置、SQL语句使用、报表元素应用、Java编程接口使用以及报表在Web环境中的...
### jasperreport+ireport开发java报表入门级教程(完整版) #### 一、简介:什么是iReport? iReport系统是一种在线系统,用于报告工作场所安全与健康(WSHA)事件报告条例下的事故、危险事件及职业病。雇主、占用...
在JasperReport中,可以通过定义变量、参数和字段来实现更复杂的功能。变量用于计算累积值或进行中间计算;参数则是在运行时传递给报表的信息,比如查询条件、日期范围等;字段是从数据源获取的具体数据值。 **4.3....
JSP(JavaServer Pages)是一种用于生成动态网页内容的技术,JasperReport可以将报表导出为JSP页面,便于在Web环境中展示。Java是一种广泛使用的编程语言,JasperReport和iReport都是用Java编写,因此运行这些工具...
- **报表导出**:学会如何将报表导出为不同的格式,例如PDF和Excel等。 - **PDF格式导出**:导出为PDF格式,便于打印和存档。 - **EXCEL格式导出**:导出为Excel格式,方便进一步的数据处理和分析。 - **调用JAVA...
7. **jasperreport+ireport开发java报表入门级教程.pdf**:专门针对Java开发者的入门教程,详细解释如何使用JasperReport和IReport构建报表。 8. **jasperReport.pdf**:可能是一个JasperReport的官方文档或者第三方...
项目中包含的"Highcharts报表导出功能所需jar包"可能指的是Highcharts Export Server,这是一个用于将Highcharts图表导出为图像或PDF的服务器端组件。它允许用户将Web页面上的交互式图表导出为静态格式,以便于打印...
- PDF是一种常用的文档格式,使用JasperReport可以很容易地将报表导出为PDF格式。 - **4.4.2 EXCEL格式导出** - Excel是另一种常见的报表格式,通过简单的配置即可将报表导出为Excel文件。 ##### 4.5 调用JAVA...
### JasperReport+iReport整合的Web报表开发 #### 1. JasperReport简介 JasperReport是一款功能强大且灵活的报表生成工具,它支持多种输出格式,包括PDF、HTML、XML、Excel(通过POI或JExcelAPI实现)和Rtf(通过...
2. **JasperExportManager**:负责报表的导出,可以将报表导出为PDF、HTML、Excel等多种格式。 3. **JasperPrint**:报表内容的内部表示,包含了所有的数据和样式信息。 【集成到Java应用】 在Java应用中集成...