java response 输出word_java环境下,把网站内容导出成word有什么成熟方法?

该博客介绍了一个Java应用,用于从网页选择多个订单后将其批量导出为Excel或Word文件。用户通过checkbox选择订单,点击相应按钮触发JS函数,拼接选中订单ID并提交请求。Action文件接收请求,处理数据并调用不同的JSP页面来生成Excel或Word。导出的文件名包含当前日期时间戳。
摘要由CSDN通过智能技术生成

说明:实现的功能是 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");

%>

订单列表 center>
序号 订单号 单价(元) 数量 总金额(元) 优惠价格(元) 实际需付金额(元) 下单时间 订单完成时间 客户账号 主机名称 订单状态
${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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值