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

jasperReports+iReport实现另存为导出excel超详细

2012-07-12 09:21 357 查看
最近的项目中用到了报表,所使用的工具就是JasperReport和iReport,JasperReport和iReport的版本一定要对应.

[b]JasperReport, ireport安装与使用请参考[/b]

http://enetq.blog.51cto.com/blog/479739/800135

http://blog.csdn.net/wandazt/article/details/7411904

/article/4317850.html

下面我说一下 java项目里面如何做成导出excel 另存为的效果,上面的例子都是指定路径生成的 这样的如果给客户使用那是肯定不行的

下面图是项目里的效果,导出的excel 是我自己制作的 有点小丑




这就另存为效果。

我用的是struts2框架

首先根据上面链接讲的 把对应的 jasper文件导入项目 导入jar包

下面是action代码

package com.erp.bb.action;

import net.sf.jasperreports.engine.export.JExcelApiExporter;

import com.erp.conn.ConnectionManager;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.util.OgnlValueStack;

import java.io.File;
import java.io.FileOutputStream;

import java.sql.Connection;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;
import org.apache.struts2.StrutsStatics;

import net.sf.jasperreports.engine.JRAbstractExporter;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.export.JExcelApiExporter;

public class daochuAction extends ActionSupport  {

private String name = null;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
public String daochuExcel() throws Exception{

HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
File reportFile = new File(name);
Map parameters = new HashMap();
Connection conn = null;
FileOutputStream output = null;
conn =  ConnectionManager.getConnection();
Map parameter = new HashMap();
JasperPrint report = null;
report = JasperFillManager.fillReport(reportFile.getPath(),parameter, conn);
JRAbstractExporter exporter = new JExcelApiExporter();
response.setHeader("Content-disposition ","attachment;filename=a");
response.setContentType("application/vnd.ms-excel");
exporter.setParameter(JRExporterParameter.JASPER_PRINT, report);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream());
exporter.exportReport();
output.close();
conn.close();
if(name=="/selectKehu.jasper"){
return "selectKehu";
}
else if(name=="/selectUser.jasper"){
return "selectUser";
}else{
return null;
}

}

}


上面有个name参数 是从页面传入的,下面有个 if else 是判断要导出excel 是哪个页面

配置xml

<package name="com.erp.bb.action" extends="struts-default">
<action name="daochu" class="com.erp.bb.action.daochuAction" method="daochuExcel">
<result name="selectKehu" type="dispatcher">/Site/xitonggl/yonghugl/deleteKehuOK.jsp</result>
<result name="selectUser" type="dispatcher">/Site/xitonggl/yonghugl/deleteOK.jsp</result>
</action>

</package>


jsp页面 导出excel <a href="#" onClick="return daochu()" class="btnExcel"><span>导出Excel</span></a>

js 指定 action name参数

function daochu()

{

document.fm.action="daochu.action?name=/selectKehu.jasper";

fm.submit();

}

OK,我请教了好多人弄了好几天才弄好,现在分享给大家,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐