`
bear999
  • 浏览: 74455 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • web
阅读更多
一、 直接拷贝整个表格到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),解决方法:一般都是表头格式比较复杂,可先把表头写死,然后再循环写其他数据。


代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
 </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 += "  ";

rows -= 1;

}

outStr += curTbl.rows[j].cells[i].innerText + " ";

if (curTbl.rows[j].cells[i].colSpan > 1) {

for (var k = 0; k < curTbl.rows[j].cells[i].colSpan - 1; k++) {

outStr += "  ";

}

}

if (i == 0) {

if (rows == 0 && curTbl.rows[j].cells[i].rowSpan > 1) {

rows = curTbl.rows[j].cells[i].rowSpan - 1;

}

}

}

outStr += " ";

}

}

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>



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhongzhengfeng/archive/2009/04/20/4094831.aspx

 

分享到:
评论

相关推荐

    aaaaa.rar_JavaScript Excel_Table_table 导出excel_导出excel

    这个"aaaaa.rar_JavaScript Excel Table_table 导出excel_导出excel"的主题涉及了如何利用JavaScript来实现从HTML表格(TABLE)导出数据到Excel文件的功能。下面将详细解释这一过程以及相关的技术知识点。 首先,...

    js操作table导出excel

    总结,JavaScript操作HTML表格导出Excel主要涉及以下几个步骤: 1. 引入`FileSaver.js`库。 2. 创建HTML表格并填充数据。 3. 使用JavaScript获取表格数据并转换为CSV格式。 4. 创建Blob对象,并使用`saveAs`方法保存...

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

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

    JSP中table导出多表头excel

    本主题聚焦于"JSP中table导出多表头excel"的技术实现,这是一种常见的需求,特别是在展示复杂表格数据时,多表头能够清晰地组织和展示信息。我们将探讨如何利用前台JavaScript技术来完成这一任务,并关注IE浏览器的...

    tableExport + base64 excel、png导出无中文乱码

    在导出Excel或PNG时,数据会被转换成Base64字符串,这样可以在前端直接显示或者通过Ajax发送到服务器,无需额外的文件上传操作。 然而,当处理包含中文字符的数据时,可能会遇到乱码的问题。这是因为中文字符在不同...

    easyui导出excel工具

    总结,EasyUI的datagrid导出Excel工具类为开发者提供了一种便捷的方式,通过前后端配合,将网页中的数据快速转换成Excel文件,满足了用户对数据管理的需求。在实际应用中,需要注意数据安全和性能优化,确保功能的...

    js导出excel的方法

    本文将详细介绍几种使用JavaScript实现导出数据到Excel的方法,包括利用ActiveX对象的方式以及纯JavaScript的方式。 #### 方法一:使用ActiveX对象(仅适用于IE浏览器) 此方法基于Internet Explorer提供的ActiveX...

    简单实用网页表格数据导出Excel电子表格文件jQuery插件

    本项目"简单实用网页表格数据导出Excel电子表格文件jQuery插件"正是为了解决这一问题。 首先,我们来探讨jQuery的核心概念。jQuery简化了JavaScript的DOM操作,提供了统一的API来选择元素、添加事件处理程序、执行...

    javascript导出Excel

    这个过程可以通过几种不同的技术实现,每种方法都有其特点和适用场景。下面,我们将详细探讨这些方法。 1. **使用`html2canvas`和`FileSaver.js`** `html2canvas`是一个JavaScript库,它可以将网页的一部分或整个...

    jquery导出excel

    下面将详细介绍几种常见的jQuery导出Excel的方法: 1. **jQuery表格插件集成**:例如`tableExport`插件,这是基于jQuery的一个开源工具,能够将HTML表格导出为Excel、CSV、PDF等多种格式。在提供的压缩包文件名称`...

    表格导出excel.zip

    "表格导出excel.zip"这个压缩包文件提供了一种将网页上的表格数据导出为Excel格式的方法,这在数据分析、报告生成或者用户数据下载场景中非常常见。下面我们将深入探讨相关知识点。 首先,我们看到标签中有"html",...

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

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

    easyui的datagrid数据excel导出

    通常有以下几种方法: 1. **利用 JavaScript 库**:例如使用 `SheetJS` 或 `xlsx` 等库,可以直接将 HTML 表格转换为 Excel 文件。 2. **服务器端处理**:将前端生成的表格数据发送到服务器端,由服务器端生成 ...

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

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

    asp.net里导出excel表方法汇总.rar

    这个压缩包“asp.net里导出excel表方法汇总.rar”包含了一个名为“asp.net里导出excel表方法汇总.txt”的文件,很可能是对几种导出Excel方法的详细概述。以下是一些常见的ASP.NET导出Excel的方法及其详细解释: 1. ...

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

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

    Export2Excel.js实现表格下载

    在IT行业中,JavaScript(简称JS)是一种广泛使用的前端编程语言,尤其在网页交互和数据处理方面发挥着重要作用。"Export2Excel.js实现表格下载"这个主题聚焦于如何使用JavaScript将表格数据导出为Excel文件,这在...

    关于html table导出为csv,xls,TXT等js插件

    在网页开发中,HTML表格(`&lt;table&gt;`)是一种常用的数据展示方式,但有时我们需要将这些数据导出为CSV、XLS或TXT等格式以便于分析或存储。在这个场景下,JavaScript(JS)插件就能派上用场。标题提到的几个插件,如`...

    利用Activex控件将html的String导出到word和excel

    在日常工作中,我们经常需要将网页中的数据导出为Word或Excel格式,以便进行进一步的数据处理或者分享给其他用户。本文将详细介绍如何使用ActiveX控件实现这一功能。 #### 一、ActiveX控件简介 ActiveX控件是一种...

    bootstrap-table-export

    Bootstrap Table Export是一个功能丰富的JavaScript库,它扩展了流行的Bootstrap框架中的表格组件,使其具备数据导出功能。这个库特别适用于需要将网页上的表格数据导出为不同格式(如Excel的xlsx格式)的Web应用...

Global site tag (gtag.js) - Google Analytics