`
elvishehai
  • 浏览: 73534 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

通过js生成Excel文件示例

阅读更多
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=GBK">  
<meta http-equiv="pragma" content="no-cache">  
<script language="jscript">  
function replaceHtml(replacedStr,repStr,endStr){  
    var replacedStrF = "";  
    var replacedStrB = "";  
    var repStrIndex = replacedStr.indexOf(repStr);  
    while(repStrIndex != -1){  
        replacedStrF = replacedStr.substring(0,repStrIndex);  
        replacedStrB = replacedStr.substring(repStrIndex,replacedStr.length);  
        replacedStrB = replacedStrB.substring(replacedStrB.indexOf(endStr)+1,replacedStrB.length);  
        replacedStr = replacedStrF + replacedStrB;  
        repStrIndex = replacedStr.indexOf(repStr);  
    }  
    return replacedStr;  
}  
//elTalbeOut 这个为导出内容的外层表格,主要是设置border之类的样式,elDiv则是整个导出的html部分  
function htmlToExcel(elTableOut,elDiv){  
    try{  
        //设置导出前的数据,为导出后返回格式而设置  
        var elDivStrBak = elDiv.innerHTML;  
        //设置table的border=1,这样到excel中就有表格线 ps:感谢双面提醒  
        elTableOut.border=1;  
        //过滤elDiv内容  
        var elDivStr = elDiv.innerHTML;  
        elDivStr = replaceHtml(elDivStr,"<A",">");  
        elDivStr = replaceHtml(elDivStr,"</A",">");  
        elDiv.innerHTML=elDivStr;     
          
        var oRangeRef = document.body.createTextRange();  
        oRangeRef.moveToElementText( elDiv );  
        oRangeRef.execCommand("Copy");  
          
        //返回格式变换以前的内容  
        elDiv.innerHTML = elDivStrBak;  
        //内容数据可能很大,所以赋空  
        elDivStrBak = "";  
        elDivStr = "";  
          
        var oXL = new ActiveXObject("Excel.Application")  
        var oWB = oXL.Workbooks.Add ;  
        var oSheet = oWB.ActiveSheet ;  
        oSheet.Paste();  
        oSheet.Cells.NumberFormatLocal = "@";  
        oSheet.Columns("D:D").Select  
        oXL.Selection.ColumnWidth = 20 
        oXL.Visible = true;       
        oSheet = null;  
        oWB = null;  
        appExcel = null;  
    }catch(e){  
        alert(e.description)  
    }  
}  
</script>  
<title></title></head>  
 
<body leftmargin="0" topmargin="0">  
<table width="90%" border="0" cellspacing="0" cellpadding="0" align="center">  
<tr>  
<td height="40" align="center" valign="middle"><INPUT type="button" value="导出" id="dcExcel" onClick="htmlToExcel(document.getElementById('elTableOut'),document.getElementById('elDiv'));"></td>  
  </tr>  
 
</table>  
 
<div id="elDiv">  
<table width="90%" border="0" align="center" cellpadding="0" cellspacing="1" bordercolor="#000000" bgcolor="#000000" id="elTableOut">  
  <tr>  
    <td height="40" align="center" valign="middle" colspan="12" bgcolor="#FFFFFF"><strong>状况汇总表</strong></td>  
  </tr>  
  <tr>  
    <td width="6%" rowspan="2" align="center" bgcolor="#FFFFFF">序号</td>  
    <td width="20%" rowspan="2" align="center" bgcolor="#FFFFFF">a</td>  
    <td width="7%" rowspan="2" align="center" bgcolor="#FFFFFF">b</td>  
    <td width="7%" rowspan="2" align="center" bgcolor="#FFFFFF">c</td>  
    <td width="7%" rowspan="2" align="center" bgcolor="#FFFFFF">d</td>  
    <td width="7%" rowspan="2" align="center" bgcolor="#FFFFFF">e</td>  
    <td width="7%" rowspan="2" align="center" bgcolor="#FFFFFF">f</td>  
    <td width="7%" rowspan="2" align="center" bgcolor="#FFFFFF">g</td>  
    <td height="25" colspan="4" align="center" bgcolor="#FFFFFF">h</td>  
  </tr>  
  <tr>  
    <td width="7%" height="25" align="center" bgcolor="#FFFFFF">i</td>  
    <td width="7%" align="center" bgcolor="#FFFFFF">j</td>  
    <td width="7%" align="center" bgcolor="#FFFFFF">k</td>  
    <td width="7%" align="center" bgcolor="#FFFFFF">l</td>  
  </tr>   
</table>  
</div>  
 
</body>  
</html> 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics