原文:http://www.cublog.cn/u/23292/showart.php?id=162129
一、 直接拷贝整个表格到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=utf-8"/>
<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>
分享到:
相关推荐
在JavaScript中将HTML表格数据导出到Excel是常见的需求,特别是在网页交互中处理大量数据时。这个过程涉及到几个关键步骤,包括数据获取、格式转换以及文件下载触发。在这个实例中,我们将探讨如何实现这一功能,...
HTML表格(table)是网页中组织结构化数据的常见方式,而Excel则是一种流行的电子表格应用程序,用于处理和分析数据。 要将HTML表格转换为Excel文件,我们首先需要选择一个合适的库或方法。一个常见的选择是使用`...
layui-excel数据导入功能的核心在于,它提供了一种便捷的方式,允许用户直接通过Excel文件导入数据到前端表格中。这一特性极大地简化了数据输入和管理流程,尤其适用于需要大量数据录入的场景。以下我们将详细介绍这...
根据给定的信息,本文将详细解释如何利用JavaScript技术将网页中的表格内容复制到Excel的一个工作表(Sheet)中。此方法对于需要频繁处理表格数据、并希望将其转换为Excel格式以便进行进一步分析或报告的人来说非常...
Excel是一种广泛使用的电子表格工具,而JSON(JavaScript Object Notation)则是一种轻量级的数据交换格式,因其易于人阅读和机器解析,被广泛应用于前后端数据传输。 首先,要实现这个功能,我们需要理解C#中的两...
下面我们将详细探讨MySQL数据导入的几种常见方法、步骤以及相关的注意事项。 1. **使用LOAD DATA INFILE命令** `LOAD DATA INFILE` 是MySQL提供的一个高效的数据导入工具,它能够快速地从CSV或其他文本文件中导入...
综上所述,本项目通过Vue.js、vue-resource和Element UI实现了具有表格操作功能和分页功能的前端应用,同时也包含了Excel导入导出的高级特性。这展示了Vue.js生态的灵活性和易用性,以及Element UI在界面设计上的...
在IT领域,表格(Table)是一种常见的数据组织和展示方式,尤其在网页设计、数据分析、文档编辑等场景中,表格的使用无处不在。本文将深入探讨“Table绘制及撤销”这一主题,主要涵盖以下几个方面: 1. **表格的...
标题中的“一款可以将普通HTML表格内容导出为CSVXLSTXT或SQL格式的jQuery插件”揭示了这个jQuery插件的主要功能,即它能够帮助开发者将网页中的HTML表格数据转换成不同格式,如CSV(逗号分隔值)、XLS(Excel文件)...
而“纯jQuery导出Excel”指的是利用jQuery来实现从网页中将数据导出到Excel文件的功能。这个压缩包文件“纯jQuery导出Excel_已测试可用.zip”包含了实现这一功能的相关代码和资源,已经过测试,可以正常工作。 要...
此外,还可以使用QueryTable对象在Excel中直接导入网页数据,简化数据提取过程。 对于动态网页和实时数据,VBA可以利用AJAX(Asynchronous JavaScript and XML)技术,实现无刷新页面更新,或者使用长连接技术保持...
- **使用方法**: 通过导入XML数据到Domino Designer中,然后使用XPages或代理来处理这些数据。 #### 45. 在Domino Designer上执行XML - **执行方法**: 使用代理或XPages来解析和处理XML数据。 #### 46. Show ...
可以先将JSON数据导入Excel,通过公式或VBA脚本来处理复杂格式,然后导出为CSV或XML,这些格式更容易被编程语言解析。 4. **使用jxl、poi库**:`jxl`是Java的一个库,用于读写Excel文件,而`poi`是Apache的一个项目...
在实际应用中,开发者可以通过引用这个JavaScript库,结合自身的项目需求,调用其提供的API和方法,实现各种复杂的表格功能,提升网页的业务处理能力和用户满意度。同时,良好的文档支持和社区资源将帮助开发者解决...
1. **数据导入**:开发者可能会使用JavaScript库,如`SheetJS`(也称为`xlsx`),将Excel文件中的数据读取到网页中。这个库可以解析xls/xlsx文件,并将数据转换为JavaScript对象,方便在HTML中显示或操作。 2. **...
通过示例演示如何将Excel文件中的数据导入到`GridView`控件中。 - **示例103**:`GridView`控件导出Excel文件样式。讲解如何设置导出的Excel文件的样式。 - **5.10 GridView高级应用** - **示例104**:`GridView`...
- 在几种排序方法中,要求内存量最大的是**归并排序**。 - 归并排序是一种基于分治策略的排序算法,它需要额外的空间来存储临时数组。 ### 计算机存储单位 19. **计算机存储单位** - 在计算机中,1024B被称为...
Axx:ARJ压缩文件的分包序号文件,用于将一个大文件压至几个小的压缩包中(xx取01-99的数字) A3L:Authorware 3.x库文件 A4L:Authorware 4.x库文件 A5L:Authorware 5.x库文件 A3M,A4M:Authorware Macintosh...