java+jxl+jsp导出excel问题 jspjavaexcel数据库 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 打断点跟踪看看;看list中有没值。 建议使用POI,JXL很久没更新了。 本帖最后由 defonds 于 2014-11-21 12:50:07 编辑 那这个LIST我杂写呢。就是不知道呀。请教。 list中的数据你应该从数据库中得到呀! 导出excel、word了什么的,你用freeer非常简单,速度快,出错很容易找到,就跟写html样的。 apache poi导入导出是不错的,这个好用点吧 List list = new ArrayList();改为List list=getData();试试 因为public static void writeExcel(OutputStream os) throws Exception 是静态的,没法用getData(),我把所有的都改成静态的,也会报别的错 不一定要把所有都改为静态的,可以把list作为参数传到writeExcel方法中这样你在main方法中先获得这个list然后把list传到writeExcel中就行了 看看例子吧。jxl是java用来操纵excel表格的一个包。里面提供了各种操作excel的类和方法。类似的还有PIO也可以实现这些功能下面是实现读取excel的一个简单示例,里面含有注释。package com.foolfish.jxl;import java.io.File;import java.io.IOException;import jxl.Workbook;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;import jxl.write.biff.RowsExceededException;public class JxlWrite {public static void main(String[] args){WritableWorkbook workbook;try {//创建工作簿workbook = Workbook.createWorkbook(new File("E:/eclipse project/Jxl/bin/test.xls"));//创建sheet WritableSheet sheet1 = workbook.createSheet("测试用excel", 0); WritableSheet sheet2 = workbook.createSheet("测试excel", 1); //开始创建cell //WritableCell cell for(int i = 0 ; i < 10 ;i++){ //向sheet中写入数据 sheet1.addCell(new jxl.write.Label(0, i, "书目ID")); } workbook.write(); workbook.close(); //sheet.addCell(new jxl.write.Label(0, 1, "书目ID")); } catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (RowsExceededException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (WriteException e) {// TODO Auto-generated catch blocke.printStackTrace();} }}下面是个读取excel的代码package com.foolfish.jxl;import java.io.File;import java.io.IOException;import jxl.Workbook;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;import jxl.write.biff.RowsExceededException;public class JxlWrite {public static void main(String[] args){WritableWorkbook workbook;try {//创建工作簿workbook = Workbook.createWorkbook(new File("E:/eclipse project/Jxl/bin/test.xls"));//创建sheet WritableSheet sheet1 = workbook.createSheet("测试用excel", 0); WritableSheet sheet2 = workbook.createSheet("测试excel", 1); //开始创建cell //WritableCell cell for(int i = 0 ; i < 10 ;i++){ //向sheet中写入数据 sheet1.addCell(new jxl.write.Label(0, i, "书目ID")); } workbook.write(); workbook.close(); //sheet.addCell(new jxl.write.Label(0, 1, "书目ID")); } catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (RowsExceededException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (WriteException e) {// TODO Auto-generated catch blocke.printStackTrace();} }} list我是在LIST getData()方法中获得的,我要如何才能把它做为参数传入静态的writeExcel方法中去呢? //在调用这个方法之前先获得list(通过getData方法),然后传到下面的方法里 dfd dObject=new dfd(); List list = dObject.getData(); File f=new File("kk.xls"); f.createNewFile(); writeExcel(new FileOutputStream(f),list); public static void writeExcel(OutputStream os,List list) throws Exception { try{ jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(os); jxl.write.WritableSheet ws = wwb.createSheet("TestSheet1", 0); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); SimpleDateFormat date2Format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); java.util.Date date = new java.util.Date(); String dateStr = dateFormat.format(date); WritableFont wf = new WritableFont(WritableFont.TIMES,16, WritableFont.BOLD,false); WritableCellFormat wcf = new WritableCellFormat(wf);//实例化文字格式化 wcf.setAlignment(jxl.format.Alignment.CENTRE);//左右居中 wcf.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//上下居中 //打印日期行格式化 WritableFont wf2 = new WritableFont(WritableFont.TIMES,10, WritableFont.NO_BOLD,false); WritableCellFormat wcf2 = new WritableCellFormat(wf2);//实例化文字格式化 wcf2.setAlignment(jxl.format.Alignment.LEFT);//左右居中 //wcf2.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//上下居中 //列名格式化 WritableFont wf3 = new WritableFont(WritableFont.TIMES,13, WritableFont.BOLD,false); WritableCellFormat wcf3 = new WritableCellFormat(wf3);//实例化文字格式化 wcf2.setAlignment(jxl.format.Alignment.CENTRE);//左右居中 //wcf2.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//上下居中 ws.insertRow(0); ws.mergeCells(0, 0, 1, 0);//合并单元格 ws.addCell(new Label(0, 0, "部门表",wcf)); ws.setRowView(0, 800);//设置高度 ws.insertRow(1); ws.mergeCells(0, 1, 1, 1); ws.addCell(new Label(0, 1, "导出日期:"+date2Format.format(date),wcf2)); ws.insertRow(2); ws.addCell(new Label(0,2,"编码",wcf3)); ws.setColumnView(0, 10);//设置列宽度 ws.addCell(new Label(1,2,"名称",wcf3)); ws.setColumnView(1, 20);//设置列宽度 //System.out.println(list.size()); for(int i=3;i<list.size()+3;i++){ Datathplyyvch data = (Datathplyyvch) list.get(i-3); ws.insertRow(i); ws.addCell(new Label(0, i, data.getVfdept_code())); ws.addCell(new Label(1, i, data.getVfdept_name())); } //写入Excel工作表 wwb.write(); //关闭Excel工作薄对象 wwb.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); //System.out.println(getVfdept_code()); } } dfd.writeExcel(response.getOutputStream(),list);我用你的方法,就得在JSP里面加上list,但是就会提示list cannot be resolved to a variable,又该怎么解决呢,不好意思,问题可能有点笨,海涵。 jsp里要导入你相应的java类<%@ page import="java.util.List" %>其它没有的类依次也导入下 jsp里要导入你相应的java类<%@ page import="java.util.List" %>其它没有的类依次也导入下<%@page import="com.jagie.test.dfd" %><%@ page import="java.util.List"%><%@ page import="java.text.SimpleDateFormat"%><%@ page import="java.sql.*"%><%@ page import="java.io.OutputStream"%><%@ page import="jxl.*"%><%@ page import="java.io.File"%><%response.reset();response.setContentType("application/vnd.ms-excel");//dfd.writeExcel(response.getOutputStream(), null);dfd.writeExcel(response.getOutputStream(),list);%>一样的提示list cannot be resolved to a variable 这个有语法错误了,这个list从哪边得到的?dfd dObject=new dfd(); List list = dObject.getData();这样才是取list 这个有语法错误了,这个list从哪边得到的?dfd dObject=new dfd(); List list = dObject.getData();这样才是取list还是不明白,能不能帮我调试成功呀,我有点晕了。 用这个吧 将数据保存在list集合 然后跳到页面输出list集合 就会自动导出到excel说明:实现的功能是 checkBox选择多个订单对象,然后由 word或excel 导出Jsp页面<a href= "javascript:exportOrders('excel')" >批量导出订单(excel) </a><a href= "javascript:exportOrders('word')" >批量导出订单(word) </a>--------------------------------------------------------------Js文件/* * 批量导出订单 *将要导出数据 id进行拼接 */function exportOrders(model) {//messageId是 checkbox的 id var messageIds = document.getElementsByName( "messageId"); var orderIds = ""; var checkedCount = 0; for ( var i = 0; i < messageIds.length; i++) { if (messageIds[i].checked) { checkedCount++; } } if (checkedCount <= 0) { alert( "请至少选择一条数据!" ); return; } else { for ( var i = 0; i < messageIds.length; i = i + 1) { if (messageIds[i].checked) { orderIds += ( "'"+messageIds[i].value + "';" ); } } } document.getElementById( "orderIds").value = orderIds; document.getElementById( "model").value = model; var action = document.myForm.action; // 记录之前的Action,用完之后,恢复原状 document.myForm.action = "order/exportOrders/"; document.myForm.submit(); document.myForm.action = action;}--------------------------------------------------------------Struts.xml文件<!-- 批量导出订单信息(excel/word)--><actionname ="exportOrders"method ="exportOrders" class="com.cloudsoar3c.action.OrderAction" > <result name= "excel">/WEB-INF/order/exportOrdersExcel.jsp </result> <result name= "word">/WEB-INF/order/exportOrdersWord.jsp </result> <interceptor-ref name= "securityStack"></interceptor-ref > </action>--------------------------------------------------------------Action文件/** * 批量导出订单信息(excel/word) * * @return */ public String exportOrders(){ String stringOrderIds = this.request .getParameter("orderIds"); String model = this.request .getParameter("model"); String orderIds = Util. charReplacement(stringOrderIds, ";", ","); Util. log(orderIds); List<TOrder> orderList = this.orderBiz .getOrderListByIds(orderIds); Util. log("导出的订单集合大小:" +orderList.size()); super.request .setAttribute("orderList", orderList); return "excel" .equals(model.trim()) ? "excel" : "word"; }--------------------------------------------------------------/** * 拆分字符串(将"A#B#C#D#E#F#"格式的字符串转换为"A,B,C,D,E,F"),并输出 */ public static String charReplacement(String sourceStr, String sourceChar, String targetChar) { String result = ""; // 将需要处理的字符串中含有的sourceChar,全部替换为targetChar String temp = sourceStr. replaceAll(sourceChar, targetChar); // 截取字符串中最后一个字符; int len = temp.length(); result = temp.substring(0, len - 1); return result; }------------------------------------------------------------------- 导出Excel的返回页面 exportOrdersExcel.jsp<%@ page language="java" import= "java.util.*" pageEncoding ="utf-8"%><%@ page contentType="text/html; charset=GBK" %><%@taglib uri= "/struts-tags" prefix ="s"%><%@page import= "java.util.*"%><%@page import= "java.text.SimpleDateFormat" %><% response.setContentType("application/vnd.ms-excel;charset=GBK" ); %><HTML><meta http-equiv="Content-Type" content="text/html; charset=GBK"><head>< title>Test</title ></head><body><% request.setCharacterEncoding( "GBK"); SimpleDateFormat sf= new SimpleDateFormat("yyyy-MM-dd_HH_mm_ss" ); response.setHeader( "Content-Disposition", "attachment;filename=order_" +sf.format(new Date())+ ".xls");%><center> 订单列表</center ><table border= "1" align ="center" width="60%"> <tr align="center"> <td >序号 </td> <td >订单号 </td> <td >单价(元) </td> <td >数量 </td> <td> 总金额(元)</td > <td >优惠价格(元) </td> <td >实际需付金额(元) </td> <td >下单时间 </td> <td >订单完成时间 </td> <td >客户账号 </td> <td >主机名称 </td> <td >订单状态 </td> </tr > <s:iterator value="#request.orderList" var= "order" status ="st"> <tr align="center"> <td style=" mso-number-format:'\@' ;"> ${st.count }</td > <td style="mso-number-format: '\@';"> <s:property value="#order.orderId" /> </td> <td style=" mso-number-format:'\@' ;"> <s:property value="#order.price" /> </ td> <td style=" mso-number-format:'\@' ;"> <s:property value="#order.buyCount" /> </ td> <td style=" mso-number-format:'\@' ;"> <s:property value="%{@com.cloudsoar3c.tools.Util@getTotalPriceByOrder(#order.totalPrice)}" /> </ td> <td style=" mso-number-format:'\@' ;"> <s:property value="#order.preferentialPrice" /></td> <td style=" mso-number-format:'\@' ;"> <s:property value="%{@com.cloudsoar3c.tools.Util@getActualPayByOrder(#order.totalPrice,#order.preferentialPrice)}" /> </ td> <td style=" mso-number-format:'\@' ;"> <s:date name="#order.orderTime" format="yyyy-MM-dd HH:mm:dd"/> </td > <td style=" mso-number-format:'\@' ;"> <s:date name="#order.completeTime" format="yyyy-MM-dd HH:mm:dd"/> </td > <td style=" mso-number-format:'\@' ;"> <s:property value="#order.TClient.email" /> </ td> <td style=" mso-number-format:'\@' ;"> <s:property value="#order.TServerHostLicense.hostName" /> </ td> <td style=" mso-number-format:'\@' ;"> <s:property value="%{#order.TStatusTypeContent.statusTypeContent}" /> </ td> </tr > </s:iterator ></table></body></HTML>-------------------------------------------------------------------导出word的返回页面 exportOrdersWord.jsp<%@ page language="java" import= "java.util.*" pageEncoding ="utf-8"%><%@ page contentType="text/html; charset=GBK"%><%@taglib uri= "/struts-tags" prefix ="s"%><%@page import= "java.util.*"%><%@page import= "java.text.SimpleDateFormat" %><% response.setContentType( "application/vnd.ms-word;charset=GBK" );%><HTML><meta http-equiv="Content-Type" content="text/html; charset=GBK"><head><title> Test</ title></head><body> <% request.setCharacterEncoding( "GBK"); SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd_HH_mm_ss" ); response.setHeader( "Content-Disposition", "attachment;filename=order_" + sf.format(new Date()) + ".doc"); %> <center >订单列表</ center> <table border="1" align= "center" width ="2000px"> <tr align= "center"> <td> 序号</td > <td> 订单号</td > <td> 单价(元)</td > <td> 数量</td > <td> 总金额(元)</td > <td> 优惠价格(元) </td> <td> 实际需付金额(元) </td> <td> 下单时间</td > <td> 订单完成时间</td > <td> 客户账号</td > <td> 主机名称</td > <td> 订单状态</td > </tr> <s:iterator value= "#request.orderList" var ="order" status="st"> <tr align= "center"> <td style=" mso-number-format:'\@' ;"> ${st.count }</td > <td style=" mso-number-format:'\@' ;"> <s:property value= "#order.orderId" /> </td> <td style=" mso-number-format:'\@' ;"> <s:property value= "#order.price" /> </td> <td style=" mso-number-format:'\@' ;"> <s:property value= "#order.buyCount" /> </td> <td style=" mso-number-format:'\@' ;"> <s:property value= "%{@com.cloudsoar3c.tools.Util@getTotalPriceByOrder(#order.totalPrice)}" /> </td> <td style=" mso-number-format:'\@' ;"> <s:property value= "#order.preferentialPrice" /></td > <td style=" mso-number-format:'\@' ;"> <s:property value= "%{@com.cloudsoar3c.tools.Util@getActualPayByOrder(#order.totalPrice,#order.preferentialPrice)}" /> </td> <td style=" mso-number-format:'\@' ;"> <s:date name= "#order.orderTime" format ="yyyy-MM-dd HH:mm:dd" /> </td> <td style=" mso-number-format:'\@' ;"> <s:date name= "#order.completeTime" format ="yyyy-MM-dd HH:mm:dd" /> </td> <td style=" mso-number-format:'\@' ;"> < s:property value="#order.TClient.email" /> </td> <td style=" mso-number-format:'\@' ;"> <s:property value= "#order.TServerHostLicense.hostName" /> </td> <td style=" mso-number-format:'\@' ;"> <s:property value= "%{#order.TStatusTypeContent.statusTypeContent}" /> </td> </tr> </s:iterator> </table ></body></HTML> debug模式断点跟踪,观察数据的传递情况 这种错误往往是不细心导致的 寻Tibco BusinessWork(BW) 道合者 请教关于lucene多字段多关键字查询的问题!!~ 急求个JAVA的视频聊天源码 请各位大哥哥大姐姐帮忙啊!!!!! 如何在jsp中启动客户端应用程序,比如notepad 100分代人问:如何求出两个cachedrowset 数据集的交集?? 急!!在线等待,关于jsp操作数据库问题,看看我这段代码 关于JSP汉字显示的问题 urgent myeclipse 导入web项目出错怎么改?求大神 我是caiB 求将“脏字”替换为“*”号的java逻辑 代码 在jsp中怎么使用Ueditor编辑器
List list=getData();试试
这样你在main方法中先获得这个list然后把list传到writeExcel中就行了
jxl是java用来操纵excel表格的一个包。里面提供了各种操作excel的类和方法。类似的还有PIO也可以实现这些功能下面是实现读取excel的一个简单示例,里面含有注释。
package com.foolfish.jxl;import java.io.File;
import java.io.IOException;import jxl.Workbook;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;public class JxlWrite {
public static void main(String[] args){
WritableWorkbook workbook;
try {
//创建工作簿
workbook = Workbook.createWorkbook(new File("E:/eclipse project/Jxl/bin/test.xls"));
//创建sheet
WritableSheet sheet1 = workbook.createSheet("测试用excel", 0);
WritableSheet sheet2 = workbook.createSheet("测试excel", 1);
//开始创建cell
//WritableCell cell
for(int i = 0 ; i < 10 ;i++){
//向sheet中写入数据
sheet1.addCell(new jxl.write.Label(0, i, "书目ID"));
}
workbook.write();
workbook.close();
//sheet.addCell(new jxl.write.Label(0, 1, "书目ID"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RowsExceededException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (WriteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
下面是个读取excel的代码package com.foolfish.jxl;import java.io.File;
import java.io.IOException;import jxl.Workbook;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;public class JxlWrite {
public static void main(String[] args){
WritableWorkbook workbook;
try {
//创建工作簿
workbook = Workbook.createWorkbook(new File("E:/eclipse project/Jxl/bin/test.xls"));
//创建sheet
WritableSheet sheet1 = workbook.createSheet("测试用excel", 0);
WritableSheet sheet2 = workbook.createSheet("测试excel", 1);
//开始创建cell
//WritableCell cell
for(int i = 0 ; i < 10 ;i++){
//向sheet中写入数据
sheet1.addCell(new jxl.write.Label(0, i, "书目ID"));
}
workbook.write();
workbook.close();
//sheet.addCell(new jxl.write.Label(0, 1, "书目ID"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RowsExceededException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (WriteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
dfd dObject=new dfd();
List list = dObject.getData();
File f=new File("kk.xls");
f.createNewFile();
writeExcel(new FileOutputStream(f),list);
public static void writeExcel(OutputStream os,List list) throws Exception {
try{
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(os);
jxl.write.WritableSheet ws = wwb.createSheet("TestSheet1", 0);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
SimpleDateFormat date2Format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date date = new java.util.Date();
String dateStr = dateFormat.format(date);
WritableFont wf = new WritableFont(WritableFont.TIMES,16, WritableFont.BOLD,false);
WritableCellFormat wcf = new WritableCellFormat(wf);//实例化文字格式化
wcf.setAlignment(jxl.format.Alignment.CENTRE);//左右居中
wcf.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//上下居中
//打印日期行格式化
WritableFont wf2 = new WritableFont(WritableFont.TIMES,10, WritableFont.NO_BOLD,false);
WritableCellFormat wcf2 = new WritableCellFormat(wf2);//实例化文字格式化
wcf2.setAlignment(jxl.format.Alignment.LEFT);//左右居中
//wcf2.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//上下居中
//列名格式化
WritableFont wf3 = new WritableFont(WritableFont.TIMES,13, WritableFont.BOLD,false);
WritableCellFormat wcf3 = new WritableCellFormat(wf3);//实例化文字格式化
wcf2.setAlignment(jxl.format.Alignment.CENTRE);//左右居中
//wcf2.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//上下居中
ws.insertRow(0);
ws.mergeCells(0, 0, 1, 0);//合并单元格
ws.addCell(new Label(0, 0, "部门表",wcf));
ws.setRowView(0, 800);//设置高度
ws.insertRow(1);
ws.mergeCells(0, 1, 1, 1);
ws.addCell(new Label(0, 1, "导出日期:"+date2Format.format(date),wcf2));
ws.insertRow(2);
ws.addCell(new Label(0,2,"编码",wcf3));
ws.setColumnView(0, 10);//设置列宽度
ws.addCell(new Label(1,2,"名称",wcf3));
ws.setColumnView(1, 20);//设置列宽度
//System.out.println(list.size());
for(int i=3;i<list.size()+3;i++){
Datathplyyvch data = (Datathplyyvch) list.get(i-3);
ws.insertRow(i);
ws.addCell(new Label(0, i, data.getVfdept_code()));
ws.addCell(new Label(1, i, data.getVfdept_name()));
}
//写入Excel工作表
wwb.write();
//关闭Excel工作薄对象
wwb.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
//System.out.println(getVfdept_code());
}
}
jsp里要导入你相应的java类
<%@ page import="java.util.List" %>
其它没有的类依次也导入下
jsp里要导入你相应的java类
<%@ page import="java.util.List" %>
其它没有的类依次也导入下
<%@page import="com.jagie.test.dfd" %>
<%@ page import="java.util.List"%>
<%@ page import="java.text.SimpleDateFormat"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.io.OutputStream"%>
<%@ page import="jxl.*"%>
<%@ page import="java.io.File"%><%response.reset();response.setContentType("application/vnd.ms-excel");
//dfd.writeExcel(response.getOutputStream(), null);
dfd.writeExcel(response.getOutputStream(),list);%>
一样的提示list cannot be resolved to a variable
dfd dObject=new dfd();
List list = dObject.getData();这样才是取list
dfd dObject=new dfd();
List list = dObject.getData();这样才是取list
还是不明白,能不能帮我调试成功呀,我有点晕了。
说明:实现的功能是 checkBox选择多个订单对象,然后由 word或excel 导出Jsp页面
<a href= "javascript:exportOrders('excel')" >批量导出订单(excel) </a><a href= "javascript:exportOrders('word')" >批量导出订单(word) </a>--------------------------------------------------------------Js文件
/*
* 批量导出订单
*将要导出数据 id进行拼接
*/
function exportOrders(model) {
//messageId是 checkbox的 id
var messageIds = document.getElementsByName( "messageId");
var orderIds = "";
var checkedCount = 0;
for ( var i = 0; i < messageIds.length; i++) {
if (messageIds[i].checked) {
checkedCount++;
}
}
if (checkedCount <= 0) {
alert( "请至少选择一条数据!" );
return;
} else {
for ( var i = 0; i < messageIds.length; i = i + 1) {
if (messageIds[i].checked) {
orderIds += ( "'"+messageIds[i].value + "';" );
}
}
}
document.getElementById( "orderIds").value = orderIds;
document.getElementById( "model").value = model;
var action = document.myForm.action; // 记录之前的Action,用完之后,恢复原状
document.myForm.action = "order/exportOrders/";
document.myForm.submit();
document.myForm.action = action;
}
--------------------------------------------------------------
Struts.xml文件
<!-- 批量导出订单信息(excel/word)-->
<actionname ="exportOrders"method ="exportOrders" class="com.cloudsoar3c.action.OrderAction" >
<result name= "excel">/WEB-INF/order/exportOrdersExcel.jsp
</result>
<result name= "word">/WEB-INF/order/exportOrdersWord.jsp
</result>
<interceptor-ref name= "securityStack"></interceptor-ref >
</action>
--------------------------------------------------------------
Action文件
/**
* 批量导出订单信息(excel/word)
*
* @return
*/
public String exportOrders(){
String stringOrderIds = this.request .getParameter("orderIds");
String model = this.request .getParameter("model");
String orderIds = Util. charReplacement(stringOrderIds, ";", ",");
Util. log(orderIds);
List<TOrder> orderList = this.orderBiz .getOrderListByIds(orderIds);
Util. log("导出的订单集合大小:" +orderList.size());
super.request .setAttribute("orderList", orderList);
return "excel" .equals(model.trim()) ? "excel" : "word";
}--------------------------------------------------------------/**
* 拆分字符串(将"A#B#C#D#E#F#"格式的字符串转换为"A,B,C,D,E,F"),并输出 */
public static String charReplacement(String sourceStr, String sourceChar,
String targetChar) {
String result = ""; // 将需要处理的字符串中含有的sourceChar,全部替换为targetChar
String temp = sourceStr. replaceAll(sourceChar, targetChar); // 截取字符串中最后一个字符;
int len = temp.length();
result = temp.substring(0, len - 1); return result;
}-------------------------------------------------------------------
<%@ page contentType="text/html; charset=GBK" %>
<%@taglib uri= "/struts-tags" prefix ="s"%>
<%@page import= "java.util.*"%>
<%@page import= "java.text.SimpleDateFormat" %>
<% response.setContentType("application/vnd.ms-excel;charset=GBK" ); %>
<HTML>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<head>< title>Test</title ></head>
<body>
<%
request.setCharacterEncoding( "GBK");
SimpleDateFormat sf= new SimpleDateFormat("yyyy-MM-dd_HH_mm_ss" );
response.setHeader( "Content-Disposition", "attachment;filename=order_" +sf.format(new Date())+ ".xls");
%>
<center> 订单列表</center >
<table border= "1" align ="center" width="60%">
<tr align="center">
<td >序号 </td>
<td >订单号 </td>
<td >单价(元) </td>
<td >数量 </td>
<td> 总金额(元)</td >
<td >优惠价格(元) </td>
<td >实际需付金额(元) </td>
<td >下单时间 </td>
<td >订单完成时间 </td>
<td >客户账号 </td>
<td >主机名称 </td>
<td >订单状态 </td>
</tr >
<s:iterator value="#request.orderList" var= "order" status ="st">
<tr align="center">
<td style=" mso-number-format:'\@' ;"> ${st.count }</td >
<td style="mso-number-format: '\@';"> <s:property value="#order.orderId" /> </td>
<td style=" mso-number-format:'\@' ;"> <s:property value="#order.price" /> </ td>
<td style=" mso-number-format:'\@' ;"> <s:property value="#order.buyCount" /> </ td>
<td style=" mso-number-format:'\@' ;"> <s:property value="%{@com.cloudsoar3c.tools.Util@getTotalPriceByOrder(#order.totalPrice)}" /> </ td>
<td style=" mso-number-format:'\@' ;"> <s:property value="#order.preferentialPrice" /></td>
<td style=" mso-number-format:'\@' ;"> <s:property value="%{@com.cloudsoar3c.tools.Util@getActualPayByOrder(#order.totalPrice,#order.preferentialPrice)}" /> </ td>
<td style=" mso-number-format:'\@' ;"> <s:date name="#order.orderTime" format="yyyy-MM-dd HH:mm:dd"/> </td >
<td style=" mso-number-format:'\@' ;"> <s:date name="#order.completeTime" format="yyyy-MM-dd HH:mm:dd"/> </td >
<td style=" mso-number-format:'\@' ;"> <s:property value="#order.TClient.email" /> </ td>
<td style=" mso-number-format:'\@' ;"> <s:property value="#order.TServerHostLicense.hostName" /> </ td>
<td style=" mso-number-format:'\@' ;"> <s:property value="%{#order.TStatusTypeContent.statusTypeContent}" /> </ td>
</tr >
</s:iterator >
</table>
</body>
</HTML>
-------------------------------------------------------------------
导出word的返回页面 exportOrdersWord.jsp
<%@ page language="java" import= "java.util.*" pageEncoding ="utf-8"%>
<%@ page contentType="text/html; charset=GBK"%>
<%@taglib uri= "/struts-tags" prefix ="s"%>
<%@page import= "java.util.*"%>
<%@page import= "java.text.SimpleDateFormat" %>
<%
response.setContentType( "application/vnd.ms-word;charset=GBK" );
%>
<HTML>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<head>
<title> Test</ title>
</head>
<body>
<%
request.setCharacterEncoding( "GBK");
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd_HH_mm_ss" );
response.setHeader( "Content-Disposition", "attachment;filename=order_" + sf.format(new Date()) + ".doc");
%>
<center >订单列表</ center>
<table border="1" align= "center" width ="2000px">
<tr align= "center">
<td> 序号</td >
<td> 订单号</td >
<td> 单价(元)</td >
<td> 数量</td >
<td> 总金额(元)</td >
<td> 优惠价格(元) </td>
<td> 实际需付金额(元) </td>
<td> 下单时间</td >
<td> 订单完成时间</td >
<td> 客户账号</td >
<td> 主机名称</td >
<td> 订单状态</td >
</tr>
<s:iterator value= "#request.orderList" var ="order" status="st">
<tr align= "center">
<td style=" mso-number-format:'\@' ;"> ${st.count }</td >
<td style=" mso-number-format:'\@' ;"> <s:property
value= "#order.orderId" />
</td>
<td style=" mso-number-format:'\@' ;"> <s:property
value= "#order.price" />
</td>
<td style=" mso-number-format:'\@' ;"> <s:property
value= "#order.buyCount" />
</td>
<td style=" mso-number-format:'\@' ;"> <s:property
value= "%{@com.cloudsoar3c.tools.Util@getTotalPriceByOrder(#order.totalPrice)}" />
</td>
<td style=" mso-number-format:'\@' ;"> <s:property
value= "#order.preferentialPrice" /></td >
<td style=" mso-number-format:'\@' ;"> <s:property
value= "%{@com.cloudsoar3c.tools.Util@getActualPayByOrder(#order.totalPrice,#order.preferentialPrice)}" />
</td>
<td style=" mso-number-format:'\@' ;"> <s:date
name= "#order.orderTime" format ="yyyy-MM-dd HH:mm:dd" />
</td>
<td style=" mso-number-format:'\@' ;"> <s:date
name= "#order.completeTime" format ="yyyy-MM-dd HH:mm:dd" />
</td>
<td style=" mso-number-format:'\@' ;">
< s:property value="#order.TClient.email" />
</td>
<td style=" mso-number-format:'\@' ;"> <s:property
value= "#order.TServerHostLicense.hostName" /> </td>
<td style=" mso-number-format:'\@' ;"> <s:property
value= "%{#order.TStatusTypeContent.statusTypeContent}" />
</td>
</tr>
</s:iterator>
</table >
</body>
</HTML>