这几天多在用jasperreports写下一点入门的东西。这里就不讲在ireport里连接jdbc了,不切实际。单说在应用里用javabean提供数据实现报表展现。
不讲别的就贴代码了。具体的操作在代理注释。下面有附用ireport图形界面连接jdbc生成报表。要添加的jar也附上。我开始练手的时候找的要死,因为多是以前的版本。配用jar很难找。还有介绍个根据包名查找具体jar的网站,应该很多人多指导了www.findjar.com,但是好像也有好些超找不到。
以下是文本报表
javabean:
package lld.test.ireport.zhj;
public class Student
{
private String name;
private String address;
private int age;
private String sex;
public Student(){}
public Student(String name, String address, int age, String sex)
{
super();
this.name = name;
this.address = address;
this.age = age;
this.sex = sex;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getAddress()
{
return address;
}
public void setAddress(String address)
{
this.address = address;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
public String getSex()
{
return sex;
}
public void setSex(String sex)
{
this.sex = sex;
}
}
makeData:
package lld.test.ireport.zhj;
import java.util.ArrayList;
/**
* 数据制造类
* @author Administrator
* @param <T>
*/
public class MakeData<T>
{
private ArrayList<T> listData = new ArrayList<T>();
public ArrayList<T> getData()
{
return listData;
}
public void addData(T t)
{
listData.add(t);
}
}
servlet:
package lld.test.ireport.zhj;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRExporter;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
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.JRXlsExporter;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.j2ee.servlets.ImageServlet;
//javabean数据源 单纯报表
public class ZhjBeanRepServlet extends HttpServlet
{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
int reportType = Integer.parseInt(req.getParameter("reportType"));
MakeData makeData = new MakeData();
makeData.addData(new Student("赵汉江", "湖南", 22, "男"));
makeData.addData(new Student("王冠峰", "河南", 22, "男"));
makeData.addData(new Student("小钱", "安徽", 22, "男"));
makeData.addData(new Student("小胡", "江西", 22, "男"));
makeData.addData(new Student("赵汉江", "湖南", 22, "男"));
makeData.addData(new Student("赵汉江", "湖南", 22, "男"));
makeData.addData(new Student("赵汉江", "湖南", 22, "男"));
makeData.addData(new Student("赵汉江", "湖南", 22, "男"));
makeData.addData(new Student("赵汉江", "湖南", 22, "男"));
makeData.addData(new Student("赵汉江", "湖南", 22, "男"));
makeData.addData(new Student("赵汉江", "湖南", 22, "男"));
makeData.addData(new Student("赵汉江", "湖南", 22, "男"));
ArrayList<Student> listStudent = makeData.getData();
String reportFilePath = this.getServletContext().getRealPath("/").replace('\\',
'/')
+ "WEB-INF/classes/lld/test/ireport/zhj/zhjtest.jasper";
File file = new File(reportFilePath);
if (!file.exists())
{
try
{
throw new Exception("jasper文件不存在:" + reportFilePath);
}
catch (Exception e)
{
e.printStackTrace();
}
}
JRDataSource dataSource = new JRBeanCollectionDataSource(listStudent);
switch (reportType)
{
case ReportDefine.REPORT_PDF:
try
{
exportPdf(req, resp, reportFilePath, dataSource);
}
catch (Exception e1)
{
e1.printStackTrace();
}
break;
case ReportDefine.REPORT_EXCEL:
try
{
exportExcel(req, resp, reportFilePath, dataSource);
}
catch (Exception e1)
{
e1.printStackTrace();
}
break;
case ReportDefine.REPORT_HTML:
try
{
exportHtml(req, resp, reportFilePath, dataSource);
}
catch (Exception e1)
{
e1.printStackTrace();
}
break;
case ReportDefine.REPORT_DOC:
try
{
exportDoc(req, resp, reportFilePath, dataSource);
}
catch (Exception e1)
{
e1.printStackTrace();
}
break;
default:
try
{
throw new Exception("报表输出类别错误:" + reportType);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
private JasperPrint getJasperPrint(String reportFilePath, JRDataSource dataSource)
throws Exception
{
JasperReport report = (JasperReport) JRLoader.loadObject(reportFilePath);
JasperPrint print = JasperFillManager.fillReport(report, null, dataSource);
return print;
}
protected void exportPdf(HttpServletRequest req, HttpServletResponse resp,
String reportFilePath, JRDataSource dataSource) throws Exception
{
System.out.println("export PDF report by JasperPrint...");
JasperPrint jasperPrint = this.getJasperPrint(reportFilePath, dataSource);
// OutputStream ouputStream = resp.getOutputStream();
resp.setContentType("application/pdf");
resp.setCharacterEncoding("UTF-8");
resp.setHeader("Content-Disposition", "attachment; filename=\""
+ URLEncoder.encode("PDF报表", "UTF-8") + ".pdf\"");
// //使用JRPdfExproter导出器导出pdf
// JRPdfExporter exporter = new JRPdfExporter();
// exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
// exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);
// exporter.exportReport();
// ouputStream.close();
// System.out.println("export PDF report by JasperRunManager...");
// OutputStream outputStream = resp.getOutputStream();
// resp.setContentType("application/pdf");
// resp.setCharacterEncoding("UTF-8");
// resp.setHeader("Content-Disposition", "attachment; filename=\""
// + URLEncoder.encode("PDF报表", "UTF-8") + ".pdf\"");
// byte[] bytes = JasperRunManager.runReportToPdf(reportFilePath, null,
// dataSource);
// outputStream.write(bytes, 0, bytes.length);
// outputStream.close();
// 生成我们的导出类JRPdfExporter 来自JRExporter
JRPdfExporter jrpdfExporter = new JRPdfExporter();
jrpdfExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
jrpdfExporter.setParameter(JRExporterParameter.OUTPUT_STREAM,resp.getOutputStream());
jrpdfExporter.exportReport();
}
protected void exportExcel(HttpServletRequest req, HttpServletResponse resp,
String reportFilePath, JRDataSource dataSource) throws Exception
{
System.out.println("export Excel report...");
JasperPrint jasperPrint = this.getJasperPrint(reportFilePath, dataSource);
JRXlsAbstractExporter exporter = new JRXlsExporter();
resp.setContentType("application/xls;charset=utf-8");
resp.setHeader("Content-Disposition", "attachment; filename=\""
+ URLEncoder.encode("Excel报表", "UTF-8") + ".xls\"");
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, resp.getOutputStream());
exporter.exportReport();
}
protected void exportHtml(HttpServletRequest req, HttpServletResponse resp,
String reportFilePath, JRDataSource dataSource) throws Exception
{
System.out.println("export HTML report...");
resp.setCharacterEncoding("UTF-8");
PrintWriter out = resp.getWriter();
resp.setContentType("text/html;charset=UTF-8");
JasperPrint jasperPrint = this.getJasperPrint(reportFilePath, dataSource);
JRHtmlExporter exporter = new JRHtmlExporter();
req.getSession().setAttribute(
ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,
Boolean.FALSE);
exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "UTF-8");
exporter.exportReport();
}
protected void exportDoc(HttpServletRequest req, HttpServletResponse resp,
String reportFilePath, JRDataSource dataSource) throws Exception
{
JasperPrint jasperPrint = this.getJasperPrint(reportFilePath, dataSource);
JRExporter exporter = new JRRtfExporter();
resp.setContentType("application/msword;charset=utf-8");
resp.setHeader("Content-Disposition", "attachment; filename=" + "doc报表.doc");
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, resp.getOutputStream());
exporter.exportReport();
}
}
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>ireport_test</display-name>
<servlet>
<servlet-name>ZhjReport</servlet-name>
<servlet-class>lld.test.ireport.zhj.ZhjBeanRepServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ZhjReport</servlet-name>
<url-pattern>/zhj_rep.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
jsp:
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
<ul>
<li>JavaBean数据源报表
<ul>
<li><a href="zhj_rep.do?reportType=1">Pdf格式</a></li>
<li><a href="zhj_rep.do?reportType=2">Excel格式</a></li>
<li><a href="zhj_rep.do?reportType=3">HTML格式</a></li>
<li><a href="zhj_rep.do?reportType=4">DOC格式</a></li>
</ul>
</li>
</ul>
</body>
</html>
以下是饼状图
servet:
package lld.test.ireport.zhj;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.util.JRLoader;
public class ZhjChartRepServlet extends HttpServlet
{
private static final long serialVersionUID = -7332836030597016040L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
try
{
String root_path = this.getServletContext().getRealPath("/");
root_path = root_path.replace('\\', '/');
String reportFilePath = root_path
+ "WEB-INF/classes/lld/test/ireport/zhj/zhjchart.jasper";
MakeData makeData = new MakeData();
makeData.addData(new Language("java", 22));