关于js导出excel问题

h_zai888 2014-08-27 10:16:55
我用这个方法导出,老是说不能创建对象,但是我在ie中应该启动的都启动了,我用的是ie6 会不会是版本问题?有没有解决办法?


//导出excel函数
function export_excel_tycx(TableId){
var xlsApp = new ActiveXObject("Excel.Application");
xlsApp.Visible = true ;
xlsApp.WorkBooks.Add() ;
var xlsWBook = xlsApp.ActiveWorkBook ;
var xlsWSheet = xlsWBook.WorkSheets(1) ;
cellwz = 1 ;
if (sTable==null){
var aRow=document.all("table_content").rows ;
}else{
var aRow=document.getElementById(TableId).rows ;
}
for( var i = 0 ; i < aRow.length ; i ++){
var aCell = aRow[i].cells ;
for ( var j = 0 ; j < aCell.length ; j ++){
xlsWSheet.Cells(i+1,j+1).value = "'" + aCell[j].innerText;
}
}
}
...全文
341 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hndwd 2014-09-02
  • 打赏
  • 举报
回复
Internet选项—安全—受限制的站点—自定义级别中启用ActiveX空间和插件
longzl123 2014-09-01
  • 打赏
  • 举报
回复

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

houxiaojian0 2014-08-27
  • 打赏
  • 举报
回复
如果事先下载功能的话,还不如使用servlet的response.setContentType(CONTENT_TYPE); 去实现下载呢 如果非要用js实现可以在google浏览器上面debug 调试下
grapepaul 2014-08-27
  • 打赏
  • 举报
回复
帮顶,ie6不会.
h_zai888 2014-08-27
  • 打赏
  • 举报
回复
有人在么?在线等……
h_zai888 2014-08-27
  • 打赏
  • 举报
回复
导出的方法很多,我是就这个js导出在ie6上为什么不能实现就论。
大鹏灬 2014-08-27
  • 打赏
  • 举报
回复
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(); } }

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧