`

Javascript实现把网页中table的内容导入到excel中的几种方法

阅读更多
转:http://www.cublog.cn/u/23292/showart.php?id=162129

Javascript实现把网页中table的内容导入到excel中的几种方法

一、            直接拷贝整个表格到EXCEL中
二、            通过遍历表格,给EXCEL中相应的单元格赋值。
三、            把表格中的内容提取出来,利用IE的另存为.csv的格式。

各方法的好处:
1.      直接拷贝表格,能够保留表格中的原有的格式,比如,列,行的合并,对齐方式,底色等等,
2.      通过遍历表格,比较灵活,可以遍历表格某些需要部分的内容。
3.      利用IE的另存为,不用创建ActiveXObject对象,可以处理表格合并方面的问题。

各方法的缺点:
1.      可能弹出脚本错误:Automation不能创建对象。
解决方法:启用IE安全设置中的:对没有标记为安全的ActiveX控件进行初始化和脚本运行。
由于整个表格复制到EXCEL中,给表格加个标题,并加入到EXCEL中可能会遇到麻烦。
解决方法:首先在表格中加入第一行

<tr><td colspan="x" align="center">&</td></tr>
X,表示整个表格的列数,复制完整个表格后,加如下代码,oSheet为当前活动的sheet.
oSheet.Range(oSheet.Cells(1, 1), oSheet.Cells(1, x)).value = "表格标题";//设置标题
oSheet.Rows(1).Font.Size = 16;   //设置文字大小          
oSheet.Rows(1).Font.Name = "宋体";//设置文字字体
注:以下属性我没用着,可能有用,也可能会报错

oSheet.Range(oSheet.Cells(1,1), oSheet.Cells(1,14)).mergecells=true; //合并单元格
oSheet.Range(oSheet.Cells(1,1), oSheet.Cells(1,14)).Interior.ColorIndex=6;//设置底色?
oSheet.Range(oSheet.Cells(1,1), oSheet.Cells(1,14)).Font.ColorIndex=5;//设置字体色?
oSheet.Rows(1).RowHeight=20; //设置列高
oSheet.Cells(iRow,iCol).Halignment=’2’//设置字体居中

2.      可能弹出脚本错误:Automation不能创建对象(解决方法如上)。
表格内容写入到EXCEL中无表格线(未解决)
且有单元格合并时会有问题,解决方法:合并单元格后再写数据。

oSheet.Range(oSheet.Cells(1,1), oSheet.Cells(1,14)).mergecells=true; //合并单元格


3.      表格内容写入到EXCEL中无表格线(未解决)

表格格式复杂时,会有问题,(rowspan>1 or colspan>1),解决方法:一般都是表头格式比较复杂,可先把表头写死,然后再循环写其他数据。

网页内容如下:(可直接拷贝到记事本,然后保存为html格式,用IE打开,有问题欢迎交流:joyleo@126.com)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=gbk"/>
    <title>WEB页面导出为EXCEL文档的方法</title>
</head>
<body>
<table id="tableExcel" width="100%" border="1" cellspacing="0" cellpadding="0">
    <tr>
        <td colspan="5" align="center">WEB页面导出为EXCEL文档的方法</td>
    </tr>
    <tr>
        <td>列标题1</td>
        <td>列标题2</td>
        <td>列标题3</td>
        <td>列标题4</td>
        <td>列标题5</td>
    </tr>
    <tr>
        <td>aaa</td>
        <td>bbb</td>
        <td>ccc</td>
        <td>ddd</td>
        <td>eee</td>
    </tr>
    <tr>
        <td>AAA</td>
        <td>BBB</td>
        <td>CCC</td>
        <td>DDD</td>
        <td>EEE</td>
    </tr>
    <tr>
        <td>FFF</td>
        <td>GGG</td>
        <td>HHH</td>
        <td>III</td>
        <td>JJJ</td>
    </tr>
</table>
<input type="button" onclick="javascript:method1('tableExcel');" value="第一种方法导入到EXCEL">
<input type="button" onclick="javascript:method2('tableExcel');" value="第二种方法导入到EXCEL">
<input type="button" onclick="javascript:getXlsFromTbl('tableExcel',null);" value="第三种方法导入到EXCEL">

<SCRIPT LANGUAGE="javascript">
function method1(tableid) {//整个表格拷贝到EXCEL中
    var curTbl = document.getElementById(tableid);
    var oXL = new ActiveXObject("Excel.Application");
    //创建AX对象excel
    var oWB = oXL.Workbooks.Add();
    //获取workbook对象
    var oSheet = oWB.ActiveSheet;
    //激活当前sheet
    var sel = document.body.createTextRange();
    sel.moveToElementText(curTbl);
    //把表格中的内容移到TextRange中
    sel.select();
    //全选TextRange中内容
    sel.execCommand("Copy");
    //复制TextRange中内容 
    oSheet.Paste();
    //粘贴到活动的EXCEL中      
    oXL.Visible = true;
    //设置excel可见属性
}

function method2(tableid) //读取表格中每个单元到EXCEL中
{
    var curTbl = document.getElementById(tableid);
    var oXL = new ActiveXObject("Excel.Application");
    //创建AX对象excel
    var oWB = oXL.Workbooks.Add();
    //获取workbook对象
    var oSheet = oWB.ActiveSheet;
    //激活当前sheet
    var Lenr = curTbl.rows.length;
    //取得表格行数
    for (i = 0; i < Lenr; i++)
    {
        var Lenc = curTbl.rows(i).cells.length;
        //取得每行的列数
        for (j = 0; j < Lenc; j++)
        {
            oSheet.Cells(i + 1, j + 1).value = curTbl.rows(i).cells(j).innerText;
            //赋值
        }
    }
    oXL.Visible = true;
    //设置excel可见属性
}

function getXlsFromTbl(inTblId, inWindow) {
    try {
        var allStr = "";
        var curStr = "";
        //alert("getXlsFromTbl");
        if (inTblId != null && inTblId != "" && inTblId != "null") {
            curStr = getTblData(inTblId, inWindow);
        }

        if (curStr != null) {
            allStr += curStr;
        }
        else {
            alert("你要导出的表不存在!");
            return;
        }

        var fileName = getExcelFileName();
        doFileExport(fileName, allStr);
    }
    catch(e) {
        alert("导出发生异常:" + e.name + "->" + e.description + "!");
    }
}

function getTblData(inTbl, inWindow) {
    var rows = 0;
    //alert("getTblData is " + inWindow);
    var tblDocument = document;
    if (!!inWindow && inWindow != "") {
        if (!document.all(inWindow)) {
            return null;
        }
        else {
            tblDocument = eval(inWindow).document;
        }
    }

    var curTbl = tblDocument.getElementById(inTbl);
    var outStr = "";
    if (curTbl != null) {
        for (var j = 0; j < curTbl.rows.length; j++) {
            //alert("j is " + j);
            for (var i = 0; i < curTbl.rows[j].cells.length; i++) {
                //alert("i is " + i);
                if (i == 0 && rows > 0) {
                    outStr += " \t";
                    rows -= 1;
                }
                outStr += curTbl.rows[j].cells[i].innerText + "\t";
                if (curTbl.rows[j].cells[i].colSpan > 1) {
                    for (var k = 0; k < curTbl.rows[j].cells[i].colSpan - 1; k++) {
                        outStr += " \t";
                    }
                }
                if (i == 0) {
                    if (rows == 0 && curTbl.rows[j].cells[i].rowSpan > 1) {
                        rows = curTbl.rows[j].cells[i].rowSpan - 1;
                    }
                }
            }
            outStr += "\r\n";
        }
    }
    else {
        outStr = null;
        alert(inTbl + "不存在!");
    }
    return outStr;
}

function getExcelFileName() {
    var d = new Date();
    var curYear = d.getYear();
    var curMonth = "" + (d.getMonth() + 1);
    var curDate = "" + d.getDate();
    var curHour = "" + d.getHours();
    var curMinute = "" + d.getMinutes();
    var curSecond = "" + d.getSeconds();

    if (curMonth.length == 1) {
        curMonth = "0" + curMonth;
    }
    if (curDate.length == 1) {
        curDate = "0" + curDate;
    }
    if (curHour.length == 1) {
        curHour = "0" + curHour;
    }
    if (curMinute.length == 1) {
        curMinute = "0" + curMinute;
    }
    if (curSecond.length == 1) {
        curSecond = "0" + curSecond;
    }
 
    var fileName = "leo_zhang" + "_" + curYear + curMonth + curDate + "_" + curHour + curMinute + curSecond + ".csv";
    //alert(fileName);
    return fileName;
}
 
function doFileExport(inName, inStr) {
    var xlsWin = null;
    if (!!document.all("glbHideFrm")) {
        xlsWin = glbHideFrm;
    }
    else {
        var width = 6;
        var height = 4;
        var openPara = "left=" + (window.screen.width / 2 - width / 2)
                + ",top=" + (window.screen.height / 2 - height / 2)
                + ",scrollbars=no,width=" + width + ",height=" + height;
        xlsWin = window.open("", "_blank", openPara);
    }

    xlsWin.document.write(inStr);
    xlsWin.document.close();
    xlsWin.document.execCommand('Saveas', true, inName);
    xlsWin.close();
}

</SCRIPT>
</body>
</html>



分享到:
评论
1 楼 sqz10200 2012-10-25  
不错挺好使.

相关推荐

    javascript 将table数据导出到excel中(支持表格线的导出)

    在JavaScript中将HTML表格数据导出到Excel是常见的需求,特别是在网页交互中处理大量数据时。这个过程涉及到几个关键步骤,包括数据获取、格式转换以及文件下载触发。在这个实例中,我们将探讨如何实现这一功能,...

    js操作table导出excel

    HTML表格(table)是网页中组织结构化数据的常见方式,而Excel则是一种流行的电子表格应用程序,用于处理和分析数据。 要将HTML表格转换为Excel文件,我们首先需要选择一个合适的库或方法。一个常见的选择是使用`...

    layui-excel数据导入demo-源码-导入即用

    layui-excel数据导入功能的核心在于,它提供了一种便捷的方式,允许用户直接通过Excel文件导入数据到前端表格中。这一特性极大地简化了数据输入和管理流程,尤其适用于需要大量数据录入的场景。以下我们将详细介绍这...

    利用Jscrīpt复制网页中的表格到Excel中

    根据给定的信息,本文将详细解释如何利用JavaScript技术将网页中的表格内容复制到Excel的一个工作表(Sheet)中。此方法对于需要频繁处理表格数据、并希望将其转换为Excel格式以便进行进一步分析或报告的人来说非常...

    C#实现excel转json[工具+源码]

    Excel是一种广泛使用的电子表格工具,而JSON(JavaScript Object Notation)则是一种轻量级的数据交换格式,因其易于人阅读和机器解析,被广泛应用于前后端数据传输。 首先,要实现这个功能,我们需要理解C#中的两...

    MYSQL数据导入

    下面我们将详细探讨MySQL数据导入的几种常见方法、步骤以及相关的注意事项。 1. **使用LOAD DATA INFILE命令** `LOAD DATA INFILE` 是MySQL提供的一个高效的数据导入工具,它能够快速地从CSV或其他文本文件中导入...

    vue+vue-resource+elementUI table组件实现增删改查和分页源码

    综上所述,本项目通过Vue.js、vue-resource和Element UI实现了具有表格操作功能和分页功能的前端应用,同时也包含了Excel导入导出的高级特性。这展示了Vue.js生态的灵活性和易用性,以及Element UI在界面设计上的...

    Table 绘制 撤销

    在IT领域,表格(Table)是一种常见的数据组织和展示方式,尤其在网页设计、数据分析、文档编辑等场景中,表格的使用无处不在。本文将深入探讨“Table绘制及撤销”这一主题,主要涵盖以下几个方面: 1. **表格的...

    一款可以将普通HTML表格内容导出为CSVXLSTXT或SQL格式的jQuery插件

    标题中的“一款可以将普通HTML表格内容导出为CSVXLSTXT或SQL格式的jQuery插件”揭示了这个jQuery插件的主要功能,即它能够帮助开发者将网页中的HTML表格数据转换成不同格式,如CSV(逗号分隔值)、XLS(Excel文件)...

    纯jQuery导出Excel_已测试可用.zip

    而“纯jQuery导出Excel”指的是利用jQuery来实现从网页中将数据导出到Excel文件的功能。这个压缩包文件“纯jQuery导出Excel_已测试可用.zip”包含了实现这一功能的相关代码和资源,已经过测试,可以正常工作。 要...

    VBA处理网页基础一.doc

    此外,还可以使用QueryTable对象在Excel中直接导入网页数据,简化数据提取过程。 对于动态网页和实时数据,VBA可以利用AJAX(Asynchronous JavaScript and XML)技术,实现无刷新页面更新,或者使用长连接技术保持...

    LotusDomino学习笔记.doc

    - **使用方法**: 通过导入XML数据到Domino Designer中,然后使用XPages或代理来处理这些数据。 #### 45. 在Domino Designer上执行XML - **执行方法**: 使用代理或XPages来解析和处理XML数据。 #### 46. Show ...

    json转表格html

    可以先将JSON数据导入Excel,通过公式或VBA脚本来处理复杂格式,然后导出为CSV或XML,这些格式更容易被编程语言解析。 4. **使用jxl、poi库**:`jxl`是Java的一个库,用于读写Excel文件,而`poi`是Apache的一个项目...

    特别好的web表格控件

    在实际应用中,开发者可以通过引用这个JavaScript库,结合自身的项目需求,调用其提供的API和方法,实现各种复杂的表格功能,提升网页的业务处理能力和用户满意度。同时,良好的文档支持和社区资源将帮助开发者解决...

    excelmick

    1. **数据导入**:开发者可能会使用JavaScript库,如`SheetJS`(也称为`xlsx`),将Excel文件中的数据读取到网页中。这个库可以解析xls/xlsx文件,并将数据转换为JavaScript对象,方便在HTML中显示或操作。 2. **...

    ASP.NET程序开发范例宝典(C#)

    通过示例演示如何将Excel文件中的数据导入到`GridView`控件中。 - **示例103**:`GridView`控件导出Excel文件样式。讲解如何设置导出的Excel文件的样式。 - **5.10 GridView高级应用** - **示例104**:`GridView`...

    2021-2022计算机二级等级考试试题及答案No.19208.docx

    - 在几种排序方法中,要求内存量最大的是**归并排序**。 - 归并排序是一种基于分治策略的排序算法,它需要额外的空间来存储临时数组。 ### 计算机存储单位 19. **计算机存储单位** - 在计算机中,1024B被称为...

    网管教程 从入门到精通软件篇.txt

    Axx:ARJ压缩文件的分包序号文件,用于将一个大文件压至几个小的压缩包中(xx取01-99的数字) A3L:Authorware 3.x库文件 A4L:Authorware 4.x库文件 A5L:Authorware 5.x库文件 A3M,A4M:Authorware Macintosh...

Global site tag (gtag.js) - Google Analytics