说明:实现的功能是 checkBox选择多个订单对象,然后由 word或excel 导出(jsp中word或excel导出)
Jsp页面
批量导出订单(excel)
批量导出订单(word)
--------------------------------------------------------------
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文件
/WEB-INF/order/exportOrdersExcel.jsp
/WEB-INF/order/exportOrdersWord.jsp
--------------------------------------------------------------
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 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"),并输出 */
publicstatic 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
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");
%>
序号 | 订单号 | 单价(元) | 数量 | 总金额(元) | 优惠价格(元) | 实际需付金额(元) | 下单时间 | 订单完成时间 | 客户账号 | 主机名称 | 订单状态 |
${st.count } | td> | td> | td> | td> | td> | td> | td> |
-------------------------------------------------------------------
导出word的返回页面 exportOrdersWord.jsp
response.setContentType( "application/vnd.ms-word;charset=GBK" );
%>
Test title>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");
%>
序号 | 订单号 | 单价(元) | 数量 | 总金额(元) | 优惠价格(元) | 实际需付金额(元) | 下单时间 | 订单完成时间 | 客户账号 | 主机名称 | 订单状态 |
${st.count } | value= "#order.orderId" /> | value= "#order.price" /> | value= "#order.buyCount" /> | value= "%{@com.cloudsoar3c.tools.Util@getTotalPriceByOrder(#order.totalPrice)}" /> | value= "#order.preferentialPrice" /> | value= "%{@com.cloudsoar3c.tools.Util@getActualPayByOrder(#order.totalPrice,#order.preferentialPrice)}" /> | name= "#order.orderTime" format ="yyyy-MM-dd HH:mm:dd" /> | name= "#order.completeTime" format ="yyyy-MM-dd HH:mm:dd" /> | < s:property value="#order.TClient.email" /> | value= "#order.TServerHostLicense.hostName" /> | value= "%{#order.TStatusTypeContent.statusTypeContent}" /> |
=================================================================================
------------------------------------------------------------------------------------------------------------------------------------------
Txt 导出 与上部分完全没关系
------------------------------------------------------------------------------------------------------------------------------------------=================================================================================
Isp页面值
导出客户手机号码( txt) a>
导出客户Email( txt) a>
------------------------------------------------------------------------------------------------------------------------------------------
Js文件
/*
* 批量导出电话或Email
*/
function exportCustomers(model) {
//messageId是 checkbox的id
var messageIds = document.getElementsByName( "messageId");
var customerIds = "";
var checkedCount = 0;
for ( var i = 0; i < messageIds.length; i++) {
if (messageIds[i].checked) {
checkedCount++;
}
}
if (checkedCount <= 0) {
alert( "请至少选择一条数据!" );
return;
} else {
//将要导出数据 id进行拼接
for ( var i = 0; i < messageIds.length; i = i + 1) {
if (messageIds[i].checked) {
customerIds += ( ""+messageIds[i].value + ";");
}
}
}
document.getElementById( "customerIds").value = customerIds;
document.getElementById( "model").value = model;
var action = document.main.action; // 记录之前的Action,用完之后,恢复原状
document.main.action = "customer/exportCustomer/";
document.main.submit();
document.main.action = action;
}
------------------------------------------------------------------------------------------------------------------------------------------
Struts文件 与原来一样
------------------------------------------------------------------------------------------------------------------------------------------
Action文件
//导出电话 和 email
public String exportCustomer(){
//保存选择的id
String stringCustomerIds = this. request.getParameter( "customerIds");
//保存导出类型 tell还是email
String model = this. request.getParameter( "model");
String customerIds = Util. charReplacement(stringCustomerIds, ";", ",");
String[] ids=customerIds.split( ",");
try {
HttpServletResponse response = ServletActionContext. getResponse();
response.setContentType( "application/octet-stream;charset=UTF-8" );
response.setHeader( "Content-Disposition","attachment;filename=\"data.txt\"" );
PrintWriter writer = new PrintWriter(response.getOutputStream());
if(model.equals( "email")){
for ( int i = 0; i < ids. length; i++) {
TCustomerInfo c= customerInfoBiz.findById(Integer. parseInt(ids[i]));
if(StringUtils. hasText(c.getEmail())){
writer.write( ""+c.getEmail()+ ";\r\r\n");
}
}
} else{ //telphone
for ( int i = 0; i < ids. length; i++) {
TCustomerInfo c= customerInfoBiz.findById(Integer. parseInt(ids[i]));
if(StringUtils. hasText(c.getTelephone())){
writer.write( ""+c.getTelephone()+ ";\r\r\n");
}
}
}
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
returnnull;
}