`
codsoul
  • 浏览: 209138 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

js导出Excel

    博客分类:
  • JS
阅读更多

js导出Excel  

1.原来直接可以使用js来导出Excel,这个世界简直太奇妙了!
把网页中的一个表格(含表格中的内容)复制到Excel的一个Sheet中,具体步骤如下
一、        创建一个含有表格的网页
1、网页代码如下
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>利用Jscrīpt复制网页中的表格到Excel中</title>
<scrīpt language="javascrīpt" src="dataToExcel.js">
</scrīpt>
<style type="text/css">
<!--
.STYLE2 {color: #000000}
-->
</style>
</head>
<body>
<table width="307" border="1" cellspacing="0" cellpadding="0" id="tableToExcel" name="tableName">
<tr bgcolor="#99CCCC">
    <td width="66" rowspan="4" bgcolor="#33FF99">吉林的长春</td>
    <td width="67" rowspan="4" bgcolor="#33FF99">辽宁的沈阳</td>
    <td width="94" rowspan="4" bgcolor="#33FF99">黑龙江的哈尔滨</td>
    <td width="30" rowspan="4" bgcolor="#33FF99">北京</td>
    <td width="38" bgcolor="#66CC99">海淀</td>
</tr>
<tr bgcolor="#99CCCC">
    <td bgcolor="#66CC99">吉林-长春</td>
</tr>
<tr bgcolor="#99CCCC">
    <td bgcolor="#66CC99">辽宁-沈阳</td>
</tr>
<tr bgcolor="#99CCCC">
    <td bgcolor="#66CC99">黑龙江-哈尔滨</td>
</tr>
<tr bgcolor="#99CCCC">
    <td colspan="5">演示javascrīpt对表格copy的处理过程(推荐) </td>
</tr>
<tr bgcolor="#99CCCC">
    <td colspan="5"><label>
      <div align="center">
        <input name="textfield" type="text" value="单行文本框控件" size="30"/>
        </div>
    </label></td>
</tr>
</table>
<br>               
   <input type="submit" name="Submit3" value="点击复制表格到Excel中" ōnclick="CellToExcel(cellToExcel)" />
</body>
</html>
2、代码说明
CellToExcel()为JS文件中定义的函数(关于JS文件稍后加以说明),tableToExcel为表格的id。
二、含有复制功能的JS文件的创建
1、dataToExcel.js文件代码如下
// Javascrīpt Document
// 杀Excel进程使用此变量
var idTmr = "";
// 函数功能:复制表格到Excel中
// 参    数:tableID 表的id
function CellToTable(tableID)
{
        try
        {
                  // 加载ActiveX控件,获取Excel句柄
                  var exApp = new ActiveXObject("Excel.Application");
                // 创建一个Excel文件
                var ōWB = exApp.WorkBooks.add();
                // 获取sheet1句柄CA
                var exSheet = exApp.ActiveWorkBook.WorkSheets(1);
              // 设置sheet1的名称
               exSheet.name="演示复制表格到Excel中";
                // copy指定的表格
                var sel=document.body.createTextRange();
            sel.moveToElementText(tableID);
            sel.select();
            sel.execCommand("Copy");
                // 粘贴到sheet中
                exSheet.Paste();
                // 弹出保存对话框,保存Excel文件 
                exApp.Save();
                // 退出Excel实例
                exApp.Quit();
                exApp = null;
                // 调用Cleanup()进行垃圾回收
                idTmr = window.setInterval("Cleanup();",10);
        }catch(Exception)
        {
                //用户点击保存对话框中的取消按钮时会发生异常
        }
}
// 函数功能:杀掉Excel进程
function Cleanup() {
          window.clearInterval(idTmr);
          CollectGarbage();
}
2、代码说明
        以上的代码每行都有注释,不再一一加以说明,其中Cleanup()中调用的CollectGarbage();是JS提供的垃圾回收函数。
三、        多个表格复制到Excel中同一个sheet中
1、        应注意的问题
设置当前sheet中的焦点,以避免多次粘贴出现覆盖现象
2、代码
exSheet.Cells(行,列).Select();
复制第二张表时,要确定焦点所在的行,通过
var table = document.all. cellToExcel; //表格的ID
var row= table.rows.length;//表格的行
var col = table.rows(0).cells.length;//表格的列
获取表格的行列,然后调用exSheet.Cells(row,1).Select();使焦点定位到表格第row行,第1列,然后执行粘贴功能的代码exSheet.Paste();,完成粘贴功能,三个以上的表格的复制,依次类推。
四、关于sheet的说明
代码中var ōWB = exApp.WorkBooks.add();这句话执行完后,Excel中默认会有三个sheet,当用户如果需要更多的sheet,要做如下的处理oWB .Sheets.Add();添加sheet,此代码每执行一次,添加一个sheet,用户可更具需要来添加sheet的数量。
分享到:
评论
4 楼 zenmshuo 2016-09-13  
这个只适用demo的文件吧?具有通用性吗?之前都是借助SpreadJS实现的
3 楼 missYu 2013-09-06  
我试也没有效果  求指导
2 楼 codsoul 2013-08-08  
会弹出excel
1 楼 qiufengxlj 2013-07-30  
我试了下,为什么没效果啊,生成的excel文档在哪个目录下啊,求指导  

相关推荐

Global site tag (gtag.js) - Google Analytics