关于js导出excel问题 excelie6js 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果事先下载功能的话,还不如使用servlet的response.setContentType(CONTENT_TYPE);去实现下载呢如果非要用js实现可以在google浏览器上面debug 调试下 public class ExportExcel { public static void DataTable2Excel(System.Data.DataTable dtData) { System.Web.UI.WebControls.DataGrid dgExport = null; // 当前对话 System.Web.HttpContext curContext = System.Web.HttpContext.Current; // IO用于导出并返回excel文件 System.IO.StringWriter strWriter = null; System.Web.UI.HtmlTextWriter htmlWriter = null; if (dtData != null) { // 设置编码和附件格式 curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=Excel.xls"); curContext.Response.ContentType = "application/vnd.ms-excel"; curContext.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); curContext.Response.Charset = "GB2312"; curContext.Response.Charset = ""; // 导出excel文件 strWriter = new System.IO.StringWriter(); htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter); // 为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的DataGrid dgExport = new System.Web.UI.WebControls.DataGrid(); dgExport.DataSource = dtData.DefaultView; dgExport.AllowPaging = false; dgExport.DataBind(); // 返回客户端 dgExport.RenderControl(htmlWriter); curContext.Response.Write(strWriter.ToString()); curContext.Response.End(); } } 导出的方法很多,我是就这个js导出在ie6上为什么不能实现就论。 说明:实现的功能是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> Internet选项—安全—受限制的站点—自定义级别中启用ActiveX空间和插件 JS中shift键相关问题 请问插入一个字段第一培训意愿为农田实验员,另外页面查询时字段不是农田实验员,并且原空字段也被插入农田实验员。如何解决? 请问JAVA怎末实现再JSP中曲线视图显示和报表,打印的功能? 求js判断aa.aspx页面是否已经打开 求救啊,查询语句不会写 servlet display-name配置问题 請有好的struts例子,給一個好嗎?小弟我正在學習struts中,需要 急急急!!用jxl导入excel,怎么让他显示表格线? 见过这样的软件吗? 怎么改变JSP运行的默认目录?我用的是jswdk 利用java系统做个文章发布求思路 IO异常
去实现下载呢
如果非要用js实现可以在google浏览器上面debug 调试下
{
public static void DataTable2Excel(System.Data.DataTable dtData)
{
System.Web.UI.WebControls.DataGrid dgExport = null;
// 当前对话
System.Web.HttpContext curContext = System.Web.HttpContext.Current;
// IO用于导出并返回excel文件
System.IO.StringWriter strWriter = null;
System.Web.UI.HtmlTextWriter htmlWriter = null; if (dtData != null)
{
// 设置编码和附件格式
curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=Excel.xls");
curContext.Response.ContentType = "application/vnd.ms-excel";
curContext.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
curContext.Response.Charset = "GB2312";
curContext.Response.Charset = ""; // 导出excel文件
strWriter = new System.IO.StringWriter();
htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter); // 为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的DataGrid
dgExport = new System.Web.UI.WebControls.DataGrid();
dgExport.DataSource = dtData.DefaultView;
dgExport.AllowPaging = false;
dgExport.DataBind(); // 返回客户端
dgExport.RenderControl(htmlWriter);
curContext.Response.Write(strWriter.ToString());
curContext.Response.End();
}
}
说明:实现的功能是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>