使用jasperreposts生成报表方法一
2015-06-02 15:32
831 查看
使用jasperreposts生成报表:
我总结了三种方法,
说方法之前呢,先来点开胃的,导包(我这里使用的是最细发布的4.1.1,工具Eclipse,struts2+Spring+iBatis)
(我这里的包是单独使用的时候的)
开始:
第一种方法:在后台生成报表保存到本地,然后再读取到jsp页面中
1).后台生成报表的工具类
package wohai.base.util.util_jasperreports;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
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.JRPdfExporterParameter;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
import unite.bean.test.UserBean;
public class JrtsUtil {
public
static void generatePDF(String reportTitle, String reportFilePath,List<Object> list) throws IOException {
//
TODO Auto-generated method stub
//begCustNo,endCustNo分别为查询传入的开始编号,结束编号.
//jdbcCustomerDao
= new JdbcCustomerDao();
ByteArrayOutputStream
outPut = new ByteArrayOutputStream();
Map
parameters = new HashMap();//参数设定
parameters.put("lie",
reportTitle);//报表标题
//List
list = jdbcCustomerDao.getAllCustomer(begCustNo, endCustNo);
try
{
JRBeanCollectionDataSource
ds = new JRBeanCollectionDataSource(list);
JasperPrint
jasperPrint = JasperFillManager.fillReport(reportFilePath, parameters, ds);
ByteArrayOutputStream
oStream = new ByteArrayOutputStream();
JRPdfExporter
pdfexporter = new JRPdfExporter();
pdfexporter.setParameter(JRExporterParameter.JASPER_PRINT,
jasperPrint);
//设置输出流
pdfexporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
outPut);
//如果保存到硬盘用下面语句
//
pdfexporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "e:\\report1.pdf");
pdfexporter.setParameter(JRPdfExporterParameter.IS_ENCRYPTED,
Boolean.FALSE);
//pdfexporter.setParameter(JRExporterParameter.CHARACTER_ENCODING,
"GBK");
pdfexporter.exportReport();
FileOutputStream
outputStream = new FileOutputStream("e:/report1.pdf");
outputStream.write(outPut.toByteArray());
//输出成XML,PDF,HTML,CSV,XLS(Excel)的任一种文件。
// OutputStream
output = new FileOutputStream(new File("e:/report1.pdf"));
//
// JasperExportManager.exportReportToPdfStream(jasperPrint,output);
}
catch (JRException e) {
e.printStackTrace();
}finally{
outPut.flush();
outPut.close();
}
}
public
static void main(String[] args) throws IOException {
try
{
List<UserBean>
list = new ArrayList<UserBean>();
UserBean
userBean = new UserBean();
userBean.setName("sdf");
userBean.setPassword("gg");
list.add(userBean);
//getCode();
generateHtml("mao","/iReport/report1.jasper",list);
}
catch (Exception e) {
//
TODO Auto-generated catch block
e.printStackTrace();
}
}
public
static void
generateHtml(String reportTitle, String reportFilePath,List<UserBean> list) throws IOException {
//
jdbcCustomerDao = new JdbcCustomerDao();
ByteArrayOutputStream
outPut = new ByteArrayOutputStream();
Map
parameters = new HashMap();//参数设定
parameters.put("lie",reportTitle
);
//List
list = jdbcCustomerDao.getAllCustomer(begCustNo, endCustNo);//获取数据
JRHtmlExporter
exporter = new JRHtmlExporter();//创建对象
ByteArrayOutputStream
oStream = new ByteArrayOutputStream();
try
{
JRBeanCollectionDataSource
ds = new JRBeanCollectionDataSource(list);
//
用数据填充JasperReport文件
JasperPrint
jasperPrint = JasperFillManager.fillReport(reportFilePath, parameters, ds);
exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,
Boolean.FALSE);
//
设置导出JASPER_PRINT
exporter.setParameter(JRExporterParameter.JASPER_PRINT,
jasperPrint);
//
导出编码格式
exporter.setParameter(JRHtmlExporterParameter.CHARACTER_ENCODING,
"utf-8");
//
设置导出流
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
outPut);
//报表边框图片设置"report/image?image=",report为你的报表及PX图片所在目录
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI,
"report/image?image=");
//执行导出
exporter.exportReport();
//
System.out.println(System.getProperty("user.dir"));
String
nowpath = System.getProperty("user.dir");
String
tempdir=nowpath.replace("bin", "webapps");
String
path = tempdir +"/"+ Jasper_Util.getCode("download_mkdir");
System.out.println(tempdir);
try
{
Jasper_Util.checkExist(path);//判断目录是否存在
}
catch (Exception e) {
//
TODO Auto-generated catch block
e.printStackTrace();
}
FileOutputStream
outputStream = new FileOutputStream(path+"/"+reportTitle+".html");
outputStream.write(outPut.toByteArray());
}
catch (JRException e) {
e.printStackTrace();
}finally{
outPut.flush();
outPut.close();
}
}
public
static void generateExcel(String reportTitle, String reportFilePath,List<Object> list) throws IOException {
//jdbcCustomerDao
= new JdbcCustomerDao();
ByteArrayOutputStream
outPut = new ByteArrayOutputStream();
Map
parameters = new HashMap();//参数设定
parameters.put("lie",
"select * from User");
//List
list = jdbcCustomerDao.getAllCustomer(begCustNo, endCustNo);
JRXlsExporter
exporter = new JRXlsExporter(); // Excel
ByteArrayOutputStream
oStream = new ByteArrayOutputStream();
try
{
JRBeanCollectionDataSource
ds = new JRBeanCollectionDataSource(list);
//填充数据
JasperPrint
jasperPrint = JasperFillManager.fillReport(reportFilePath, parameters, ds);
exporter.setParameter(JRExporterParameter.JASPER_PRINT,
jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
outPut);
exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,
Boolean.TRUE);//
删除记录最下面的空行
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,
Boolean.FALSE);//
删除多余的ColumnHeader
exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,
Boolean.FALSE);//
显示边框
exporter.exportReport();
FileOutputStream
outputStream = new FileOutputStream("e:/report1.xls");
outputStream.write(outPut.toByteArray());
}
catch (JRException e) {
e.printStackTrace();
}finally{
outPut.flush();
outPut.close();
}
}
}
2).action
package unite.action.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import wohai.base.action.BaseAction;
import wohai.base.util.util_jasperreports.Jasper_Util;
import wohai.base.util.util_jasperreports.JrtsUtil;
@SuppressWarnings("serial")
public class Jasper_UpLoadAction extends BaseAction {
private
String reportTitle;//报表的名字
private
List sourseList = new ArrayList();
//获得下载文件的内容,可以直接读入一个物理文件或从数据库中获取内容
public
InputStream getInputStream() throws Exception {
String
nowpath = System.getProperty("user.dir");
String
tempdir=nowpath.replace("bin", "webapps");
String
path = tempdir +"/"+ Jasper_Util.getCode("download_mkdir");
File
file = new File(path+"/"+reportTitle+".html");
if
(file.exists()) {
InputStream
inputStream = new FileInputStream(file);
//下载文件
return
inputStream;
}
return
null;
}
public
static String getDownloadFileName(String name) {
String
downFileName = name;
try
{
downFileName
= new String(downFileName.getBytes(), "ISO8859-1");
}
catch (Exception e) {
e.printStackTrace();
}
return
downFileName;
}
@Override
public
String execute() throws Exception {
//
TODO Auto-generated method stub
reportTitle
= getDownloadFileName(request.getParameter("reportTitle"));
JrtsUtil.generateHtml(reportTitle,Jasper_Util.getCode("jasper_mkdir"),sourseList);
return
SUCCESS;
}
public
String getReportTitle() {
return
reportTitle;
}
public
void setReportTitle(String reportTitle) {
this.reportTitle
= reportTitle;
}
public
List getSourseList() {
return
sourseList;
}
public
void setSourseList(List sourseList) {
this.sourseList
= sourseList;
}
}
3).用到的辅助工具类
public
static String getCode(String key){
Locale
locale1 = new Locale("zh", "CN");
ResourceBundle
resb = ResourceBundle.getBundle("jasper", locale1);
System.out.println(resb.getString(key));
return
resb.getString(key);
}
//.properties配置文件里存放是我要用到的路径
public
static void checkExist(String filepath) throws Exception{
File
file=new File(filepath);
if
(file.exists()) {//判断文件目录的存在
}else
{
System.out.println("文件夹不存在!3");
file.mkdirs();
}
}
我总结了三种方法,
说方法之前呢,先来点开胃的,导包(我这里使用的是最细发布的4.1.1,工具Eclipse,struts2+Spring+iBatis)
(我这里的包是单独使用的时候的)
开始:
第一种方法:在后台生成报表保存到本地,然后再读取到jsp页面中
1).后台生成报表的工具类
package wohai.base.util.util_jasperreports;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
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.JRPdfExporterParameter;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
import unite.bean.test.UserBean;
public class JrtsUtil {
public
static void generatePDF(String reportTitle, String reportFilePath,List<Object> list) throws IOException {
//
TODO Auto-generated method stub
//begCustNo,endCustNo分别为查询传入的开始编号,结束编号.
//jdbcCustomerDao
= new JdbcCustomerDao();
ByteArrayOutputStream
outPut = new ByteArrayOutputStream();
Map
parameters = new HashMap();//参数设定
parameters.put("lie",
reportTitle);//报表标题
//List
list = jdbcCustomerDao.getAllCustomer(begCustNo, endCustNo);
try
{
JRBeanCollectionDataSource
ds = new JRBeanCollectionDataSource(list);
JasperPrint
jasperPrint = JasperFillManager.fillReport(reportFilePath, parameters, ds);
ByteArrayOutputStream
oStream = new ByteArrayOutputStream();
JRPdfExporter
pdfexporter = new JRPdfExporter();
pdfexporter.setParameter(JRExporterParameter.JASPER_PRINT,
jasperPrint);
//设置输出流
pdfexporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
outPut);
//如果保存到硬盘用下面语句
//
pdfexporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "e:\\report1.pdf");
pdfexporter.setParameter(JRPdfExporterParameter.IS_ENCRYPTED,
Boolean.FALSE);
//pdfexporter.setParameter(JRExporterParameter.CHARACTER_ENCODING,
"GBK");
pdfexporter.exportReport();
FileOutputStream
outputStream = new FileOutputStream("e:/report1.pdf");
outputStream.write(outPut.toByteArray());
//输出成XML,PDF,HTML,CSV,XLS(Excel)的任一种文件。
// OutputStream
output = new FileOutputStream(new File("e:/report1.pdf"));
//
// JasperExportManager.exportReportToPdfStream(jasperPrint,output);
}
catch (JRException e) {
e.printStackTrace();
}finally{
outPut.flush();
outPut.close();
}
}
public
static void main(String[] args) throws IOException {
try
{
List<UserBean>
list = new ArrayList<UserBean>();
UserBean
userBean = new UserBean();
userBean.setName("sdf");
userBean.setPassword("gg");
list.add(userBean);
//getCode();
generateHtml("mao","/iReport/report1.jasper",list);
}
catch (Exception e) {
//
TODO Auto-generated catch block
e.printStackTrace();
}
}
public
static void
generateHtml(String reportTitle, String reportFilePath,List<UserBean> list) throws IOException {
//
jdbcCustomerDao = new JdbcCustomerDao();
ByteArrayOutputStream
outPut = new ByteArrayOutputStream();
Map
parameters = new HashMap();//参数设定
parameters.put("lie",reportTitle
);
//List
list = jdbcCustomerDao.getAllCustomer(begCustNo, endCustNo);//获取数据
JRHtmlExporter
exporter = new JRHtmlExporter();//创建对象
ByteArrayOutputStream
oStream = new ByteArrayOutputStream();
try
{
JRBeanCollectionDataSource
ds = new JRBeanCollectionDataSource(list);
//
用数据填充JasperReport文件
JasperPrint
jasperPrint = JasperFillManager.fillReport(reportFilePath, parameters, ds);
exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,
Boolean.FALSE);
//
设置导出JASPER_PRINT
exporter.setParameter(JRExporterParameter.JASPER_PRINT,
jasperPrint);
//
导出编码格式
exporter.setParameter(JRHtmlExporterParameter.CHARACTER_ENCODING,
"utf-8");
//
设置导出流
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
outPut);
//报表边框图片设置"report/image?image=",report为你的报表及PX图片所在目录
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI,
"report/image?image=");
//执行导出
exporter.exportReport();
//
System.out.println(System.getProperty("user.dir"));
String
nowpath = System.getProperty("user.dir");
String
tempdir=nowpath.replace("bin", "webapps");
String
path = tempdir +"/"+ Jasper_Util.getCode("download_mkdir");
System.out.println(tempdir);
try
{
Jasper_Util.checkExist(path);//判断目录是否存在
}
catch (Exception e) {
//
TODO Auto-generated catch block
e.printStackTrace();
}
FileOutputStream
outputStream = new FileOutputStream(path+"/"+reportTitle+".html");
outputStream.write(outPut.toByteArray());
}
catch (JRException e) {
e.printStackTrace();
}finally{
outPut.flush();
outPut.close();
}
}
public
static void generateExcel(String reportTitle, String reportFilePath,List<Object> list) throws IOException {
//jdbcCustomerDao
= new JdbcCustomerDao();
ByteArrayOutputStream
outPut = new ByteArrayOutputStream();
Map
parameters = new HashMap();//参数设定
parameters.put("lie",
"select * from User");
//List
list = jdbcCustomerDao.getAllCustomer(begCustNo, endCustNo);
JRXlsExporter
exporter = new JRXlsExporter(); // Excel
ByteArrayOutputStream
oStream = new ByteArrayOutputStream();
try
{
JRBeanCollectionDataSource
ds = new JRBeanCollectionDataSource(list);
//填充数据
JasperPrint
jasperPrint = JasperFillManager.fillReport(reportFilePath, parameters, ds);
exporter.setParameter(JRExporterParameter.JASPER_PRINT,
jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
outPut);
exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,
Boolean.TRUE);//
删除记录最下面的空行
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,
Boolean.FALSE);//
删除多余的ColumnHeader
exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,
Boolean.FALSE);//
显示边框
exporter.exportReport();
FileOutputStream
outputStream = new FileOutputStream("e:/report1.xls");
outputStream.write(outPut.toByteArray());
}
catch (JRException e) {
e.printStackTrace();
}finally{
outPut.flush();
outPut.close();
}
}
}
2).action
package unite.action.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import wohai.base.action.BaseAction;
import wohai.base.util.util_jasperreports.Jasper_Util;
import wohai.base.util.util_jasperreports.JrtsUtil;
@SuppressWarnings("serial")
public class Jasper_UpLoadAction extends BaseAction {
private
String reportTitle;//报表的名字
private
List sourseList = new ArrayList();
//获得下载文件的内容,可以直接读入一个物理文件或从数据库中获取内容
public
InputStream getInputStream() throws Exception {
String
nowpath = System.getProperty("user.dir");
String
tempdir=nowpath.replace("bin", "webapps");
String
path = tempdir +"/"+ Jasper_Util.getCode("download_mkdir");
File
file = new File(path+"/"+reportTitle+".html");
if
(file.exists()) {
InputStream
inputStream = new FileInputStream(file);
//下载文件
return
inputStream;
}
return
null;
}
public
static String getDownloadFileName(String name) {
String
downFileName = name;
try
{
downFileName
= new String(downFileName.getBytes(), "ISO8859-1");
}
catch (Exception e) {
e.printStackTrace();
}
return
downFileName;
}
@Override
public
String execute() throws Exception {
//
TODO Auto-generated method stub
reportTitle
= getDownloadFileName(request.getParameter("reportTitle"));
JrtsUtil.generateHtml(reportTitle,Jasper_Util.getCode("jasper_mkdir"),sourseList);
return
SUCCESS;
}
public
String getReportTitle() {
return
reportTitle;
}
public
void setReportTitle(String reportTitle) {
this.reportTitle
= reportTitle;
}
public
List getSourseList() {
return
sourseList;
}
public
void setSourseList(List sourseList) {
this.sourseList
= sourseList;
}
}
3).用到的辅助工具类
public
static String getCode(String key){
Locale
locale1 = new Locale("zh", "CN");
ResourceBundle
resb = ResourceBundle.getBundle("jasper", locale1);
System.out.println(resb.getString(key));
return
resb.getString(key);
}
//.properties配置文件里存放是我要用到的路径
public
static void checkExist(String filepath) throws Exception{
File
file=new File(filepath);
if
(file.exists()) {//判断文件目录的存在
}else
{
System.out.println("文件夹不存在!3");
file.mkdirs();
}
}
相关文章推荐
- 使用jasperreposts生成报表方法二,三
- OWASP Top 10 – 2013, 最新十大安全隐患(ASP.NET解决方法)
- Owasp Top 10 Security Risks for 2014
- Asp.Net Server.Execute、Server.Transfer报“执行子请求时出错”解决方案
- ASP.NET MVC 实现跨域请求的两种形式
- ajax请求aspx页面
- Asp.Net 文件加解密
- Raspberry Pi2 Model B下Tl-WN725N v2.0无线网卡驱动
- AspNet MVC4 教学-22:Asp.Net MVC4 Partial View 技术快速应用Demo
- Asp.Net MVC3 简单入门详解过滤器Filter(身份验证、缓存、防盗链、国际化等)
- Asp.Net 用户验证(自定义IPrincipal和IIdentity)
- ASP.NET MVC公共模板、节、分部视图等
- ASP.NET MVC异步加载分部视图
- Asp.Net MVC之ViewData字典与ViewModel模式
- ASP.NET MVC中ActionResult返回值
- ASP.NET MVC Razor视图引擎攻略
- 在ASP.NET MVC中实现大文件异步上传
- 安装了VS2010 sp1 后再安装ASP.NET MVC 3.0的问题(Final Result: Installation failed with error code: (0x80070643), "安装时发生严重错误 " (Ela)
- ASP.NET MVC部署到IIS
- 关于asp.net中页面事件加载的先后顺序(转)