表格转excel格式

表格转excel格式

简介:收集网上有的关于‘表格转excel格式’代码

表格转excel格式下载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<button type="button" onclick="method('tableExcel')">导出Excel</button>
<table id="tableExcel" width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td colspan="2" align="center">html 表格导出道Excel</td>
</tr>
<tr>
<td>列标题1</td>
<td>列标题2</td>
</tr>
<tr>
<td>aaa</td>
<td>bbb</td>
</tr>
<tr>
<td>AAA</td>
<td>BBB</td>
</tr>
</table>
<a>导出表格</a>

方法一:
通过将获取到的tabel代码转换为base64编码格式,再进行下载,emmm…由于IE浏览器的特殊性,优先判断浏览器属性,在进行兼容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
var idTmr = "";

function copy(tabid) {
var oControlRange = document.body.createControlRange();
oControlRange.add(tabid, 0);
oControlRange.select();
document.execCommand("Copy");
}

//判断浏览器,主要是判断ie,其他浏览器都很友好哒!
function isIE() {
if (!!window.ActiveXObject || "ActiveXObject" in window) {
return true;
} else {
return false;
}
}

var tableToExcel = (function() {
var uri = 'data:application/vnd.ms-excel;base64,'

var template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html><meta charset="UTF-8">',

//将table表格代码,转换为bese64编码
var base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) },

// 将template中的变量替换为页面内容ctx获取到的值
var format = function(s, c) {
return s.replace(/{(\w+)}/g, function(m, p) {
// m: {table}, p: table
return c[p];
})
};

return function(table, name) {
if (!table.nodeType) {
table = document.getElementById(table)
}
// 获取表单的名字和表单查询的内容
var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML };
// format()函数:通过格式操作使任意类型的数据转换成一个字符串
// base64():进行编码
window.location.href = uri + base64(format(template, ctx))
}
})()

function toExcel(tabid) {
if (isIE()) {
copy(tabid);
try {
var xls = new ActiveXObject("Excel.Application");
} catch (e) {
alert("Excel没有安装或浏览器设置不正确.请启用所有Active控件和插件");
return false;
}
xls.visible = true;
var xlBook = xls.Workbooks.Add;
var xlsheet = xlBook.Worksheets(1);
xlBook.Worksheets(1).Activate;
for (var i = 0; i < tabid.rows(0).cells.length; i++) {
xlsheet.Columns(i + 1).ColumnWidth = 15;
}
xlsheet.Paste;
xls = null;
idTmr = window.setInterval("Cleanup();", 1);
} else {
tableToExcel(tabid)
}
}

function Cleanup() {
window.clearInterval(idTmr);
CollectGarbage();
}

CollectGarbage:
IE的一个特有属性,用于释放内存的,使用方法应该是,将该变量或引用对象,设置为null或delete,然后在进行释放动作,在做CollectGarbage前,要必需清楚的两个必备条件:

  • 一个对象在其生存的上下文环境之外,即会失效。
  • 一个全局的对象在没有被执用(引用)的情况下,即会失效。

方法二:

1
2
3
4
5
6
7
8
9
10
11
12
13
// 使用outerHTML属性获取整个table元素的HTML代码(包括<table>标签),然后包装成一个完整的HTML文档,设置charset为urf-8以防止中文乱码
var html = "<html><head><meta charset='utf-8' /></head><body>" + document.getElementsByTagName("table")[0].outerHTML + "</body></html>";

// 实例化一个Blob对象,其构造函数的第一个参数是包含文件内容的数组,第二个参数是包含文件类型属性的对象
var blob = new Blob([html], { type: "application/vnd.ms-excel" });

var a = document.getElementsByTagName("a")[0];

// 利用URL.createObjectURL()方法为a元素生成blob URL
a.href = URL.createObjectURL(blob);

// 设置文件名
a.download = "学生成绩表.xls";

本文标题:表格转excel格式

文章作者:AngellinaZ

发布时间:2018年11月07日 - 09:11

最后更新:2018年11月07日 - 09:11

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------本文结束感谢您的阅读-------------