Jasperreport是一个功能强大的报表类库,可以利用ireport设计报表的最终显示内容和页面。此文实现jasperreport与项目的集成,利用此方式在以后增加报表时,只需做二部分工作,一是通过ireport 设计报表,二是针对报表所需的参数编写jsp页面。
1 下载相关项目包
iReport-nb-3.1.3.zip
jasperreports-3.1.4-project.zip
2 把相关jar包加入web-inf的lib目录下
itext-1.3.jar
iTextAsian.jar
jasperreports-1.3.3.jar
jxl.jar
poi-3.0.1-FINAL-20070705.jar
poi-contrib-3.0.1-FINAL-20070705.jar
poi-scratchpad-3.0.1-FINAL-20070705.jar
3 编写相关servlet类
package com.web.servlet;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.shane.areaportal.web.util.ConnectionFactory;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.export.JRHtmlExporter;
import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.export.JRRtfExporter;
import net.sf.jasperreports.engine.export.JRXlsAbstractExporter;
import net.sf.jasperreports.engine.export.JRXlsAbstractExporterParameter;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.j2ee.servlets.BaseHttpServlet;
import net.sf.jasperreports.j2ee.servlets.ImageServlet;
public class IreportServlet extends BaseHttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=GBK");
ServletContext context = this.getServletConfig().getServletContext();
String type = request.getParameter("type");
JasperPrint jasperPrint = null;
JRXlsAbstractExporter xlsexporter;
JRPdfExporter pdfexporter;
JRRtfExporter rtfexporter;
List list = null;
//判断HTML格式报表
if("HTML".equals(type)||"".equals(type)||type==null) {
PrintWriter out = response.getWriter();
jasperPrint = (JasperPrint)request.getSession().getAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE);
int pageIndex = 0;
int lastPageIndex = 1;