在Java Web开发时,如何将页面上的数据用Excel报表导出来 求回复~~~~ 我用的是ssh框架做的项目 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用poi或者jxl写个业务类,封装好数据,在action调用一下,页面上点个按钮请求action的方法,这样就可以生成了。 www.apache.org里面有POI下载。最新的是3.0HSSFWorkbook workbook = new HSSFWorkbook();//一个EXCEL工作薄对象//拼装数据结束后,可以writeworkbook.write(response.getOutputStream()); POI操作EXCEL实例:利用Servlet创建和返回一个工作簿。 package org.apache.poi.hssf.usermodel.examples; import java.io.*; import java.net.*; import javax.servlet.*; import javax.servlet.http.*; import org.apache.poi.hssf.usermodel.*; public class HSSFCreate extends HttpServlet { public void init(ServletConfig config) throws ServletException { super.init(config); } public void destroy() { } /** 处理HTTP GET 和POST请求 * @param request:请求 * @param response:应答 */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("application/vnd.ms-excel"); HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("new sheet"); // 创建一个新的行,添加几个单元格。 // 行号从0开始计算 HSSFRow row = sheet.createRow((short)0); // 创建一个单元格,设置单元格的值 HSSFCell cell = row.createCell((short)0); cell.setCellValue(1); row.createCell((short)1).setCellValue(1.2); row.createCell((short)2).setCellValue("一个字符串值"); row.createCell((short)3).setCellValue(true); // 写入输出结果 OutputStream out = response.getOutputStream(); wb.write(out); out.close(); } /** 处理HTTP GET请求 * @param request:请求 * @param response:应答 */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** 处理HTTP POST请求 * @param request:请求 * @param response:应答 */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** 返回关于Servlet的简单说明 */ public String getServletInfo() { return "示例:在Servlet中用HSSF创建Excel工作簿"; } } http://www.javaeye.com/topic/705178 POI JXL JACOB都可以操作EXCEL this.getRes().reset();this.getRes().setContentType("application/vnd.ms-excel;charset=gb2312");this.getRes().setHeader("Content-Disposition", "attachment; filename=\"" + new String("物资月度中标金额比较表.xls".getBytes("gb2312"),"ISO-8859-1") + "\"");OutputStream output = this.getRes().getOutputStream();ExcelWorkBook workBook = ExcelUtil.getWorkBook(output);ExcelSheet sheet = workBook.addSheet("sheet1");sql 得到listfor(){遍历list插入到对应的cell中}workBook.write(output);output.flush();output.close(); 如果确定你的所有客户端上都装有office软件直接页面改下 <%@page contentType="application/vnd.ms-excel;charset=GBK" %>出来就是excel 也可以用就是做啊!不过浏览器的安全性要设置下,<script language="jscript"> function replaceHtml(replacedStr,repStr,endStr){ var replacedStrF = ""; var replacedStrB = ""; var repStrIndex = replacedStr.indexOf(repStr); while(repStrIndex != -1){ replacedStrF = replacedStr.substring(0,repStrIndex); replacedStrB = replacedStr.substring(repStrIndex,replacedStr.length); replacedStrB = replacedStrB.substring(replacedStrB.indexOf(endStr)+1,replacedStrB.length); replacedStr = replacedStrF + replacedStrB; repStrIndex = replacedStr.indexOf(repStr); } return replacedStr; } function htmlToExcel(elTableOut,elDiv){ try{ var elDivStrBak = elDiv.innerHTML; elTableOut.border=1; var elDivStr = elDiv.innerHTML; elDivStr = replaceHtml(elDivStr,"<A",">"); elDivStr = replaceHtml(elDivStr,"</A",">"); elDiv.innerHTML=elDivStr; var oRangeRef = document.body.createTextRange(); oRangeRef.moveToElementText( elDiv ); oRangeRef.execCommand("Copy"); elDiv.innerHTML = elDivStrBak; elDivStrBak = ""; elDivStr = ""; var oXL = new ActiveXObject("Excel.Application") var oWB = oXL.Workbooks.Add ; var oSheet = oWB.ActiveSheet ; oSheet.Paste(); oSheet.Cells.NumberFormatLocal = "@"; oSheet.Columns("D:D").Select oXL.Selection.ColumnWidth = 20 oXL.Visible = true; oSheet = null; oWB = null; appExcel = null; }catch(e){ alert(e.description) } } </script> <div id="elDiv"><table id="elTableOut"><tr><td>数据</td></tr></table></div> 写一个action(A)用于从数据库取出数据,写一个页面(action A返回的页面)excel.jspexcel.jsp页面做成需要导出的excel的格式对excel.jsp做特殊处理:<% //就是靠这一行,让前端浏览器以为接收到一个excel档 response.setHeader("Content-disposition","attachment; filename="+request.getAttribute("startDate")+"~"+request.getAttribute("endDate")+".xls");%><html><meta http-equiv="Content-Type" content="text/html; charset=GBK"><head><title></title></head><body> <table> ..... </table></body></html>这样就OK啦 用报表系统吧。。 quiee。 绝对能满足你的要求 structs文件上传,空指针问题 [急]关于hibernate,Criteria,Projection汇总查询的问题 谁能给个applet通信servlet然后存数据库的例子 java2word 如何操作word? 有没有谁知道买Sqlserver2000的使用权大概要多少钱? 一个关于synchronized小问题 关于ireport 问题 用jsp连接数据库时经常出问题,求救!!! 在WIN2000 SERVER下装TOMCAT出现的问题?? 关于servlet的url问题 哪位大侠可以给我详细讲解下上传文件(图片)的原理? jsp实现域名查询功能
里面有POI下载。最新的是3.0HSSFWorkbook workbook = new HSSFWorkbook();//一个EXCEL工作薄对象//拼装数据结束后,可以write
workbook.write(response.getOutputStream());
package org.apache.poi.hssf.usermodel.examples;
import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.poi.hssf.usermodel.*;
public class HSSFCreate extends HttpServlet {
public void init(ServletConfig config)
throws ServletException {
super.init(config);
}
public void destroy() {
}
/** 处理HTTP GET 和POST请求
* @param request:请求
* @param response:应答
*/
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("application/vnd.ms-excel");
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");
// 创建一个新的行,添加几个单元格。
// 行号从0开始计算
HSSFRow row = sheet.createRow((short)0);
// 创建一个单元格,设置单元格的值
HSSFCell cell = row.createCell((short)0);
cell.setCellValue(1);
row.createCell((short)1).setCellValue(1.2);
row.createCell((short)2).setCellValue("一个字符串值");
row.createCell((short)3).setCellValue(true);
// 写入输出结果
OutputStream out = response.getOutputStream();
wb.write(out);
out.close();
}
/** 处理HTTP GET请求
* @param request:请求
* @param response:应答
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/** 处理HTTP POST请求
* @param request:请求
* @param response:应答
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/** 返回关于Servlet的简单说明
*/
public String getServletInfo() {
return "示例:在Servlet中用HSSF创建Excel工作簿";
}
}
this.getRes().setContentType("application/vnd.ms-excel;charset=gb2312");
this.getRes().setHeader("Content-Disposition", "attachment; filename=\""
+ new String("物资月度中标金额比较表.xls".getBytes("gb2312"),"ISO-8859-1") + "\"");
OutputStream output = this.getRes().getOutputStream();
ExcelWorkBook workBook = ExcelUtil.getWorkBook(output);
ExcelSheet sheet = workBook.addSheet("sheet1");sql 得到list
for(){
遍历list
插入到对应的cell中
}
workBook.write(output);
output.flush();
output.close();
直接页面改下 <%@page contentType="application/vnd.ms-excel;charset=GBK" %>
出来就是excel
<script language="jscript">
function replaceHtml(replacedStr,repStr,endStr){
var replacedStrF = "";
var replacedStrB = "";
var repStrIndex = replacedStr.indexOf(repStr);
while(repStrIndex != -1){
replacedStrF = replacedStr.substring(0,repStrIndex);
replacedStrB = replacedStr.substring(repStrIndex,replacedStr.length);
replacedStrB = replacedStrB.substring(replacedStrB.indexOf(endStr)+1,replacedStrB.length);
replacedStr = replacedStrF + replacedStrB;
repStrIndex = replacedStr.indexOf(repStr);
}
return replacedStr;
}
function htmlToExcel(elTableOut,elDiv){
try{
var elDivStrBak = elDiv.innerHTML;
elTableOut.border=1;
var elDivStr = elDiv.innerHTML;
elDivStr = replaceHtml(elDivStr,"<A",">");
elDivStr = replaceHtml(elDivStr,"</A",">");
elDiv.innerHTML=elDivStr;
var oRangeRef = document.body.createTextRange();
oRangeRef.moveToElementText( elDiv );
oRangeRef.execCommand("Copy");
elDiv.innerHTML = elDivStrBak;
elDivStrBak = "";
elDivStr = "";
var oXL = new ActiveXObject("Excel.Application")
var oWB = oXL.Workbooks.Add ;
var oSheet = oWB.ActiveSheet ;
oSheet.Paste();
oSheet.Cells.NumberFormatLocal = "@";
oSheet.Columns("D:D").Select
oXL.Selection.ColumnWidth = 20
oXL.Visible = true;
oSheet = null;
oWB = null;
appExcel = null;
}catch(e){
alert(e.description)
}
}
</script> <div id="elDiv"><table id="elTableOut"><tr><td>数据</td></tr></table></div>
excel.jsp页面做成需要导出的excel的格式
对excel.jsp做特殊处理:<%
//就是靠这一行,让前端浏览器以为接收到一个excel档
response.setHeader("Content-disposition","attachment; filename="+request.getAttribute("startDate")+"~"+request.getAttribute("endDate")+".xls");
%>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<head>
<title></title>
</head>
<body>
<table>
.....
</table>
</body>
</html>这样就OK啦