您的位置:首页 > 编程语言 > ASP

使用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();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: