<!DOCTYPE html>
<html>
<head lang=
"en"
>
<meta charset=
"UTF-8"
>
<title>html 表格导出道</title>
<script language=
"JavaScript"
type=
"text/javascript"
>
function
method1(tableid) {
var
curTbl = document.getElementById(tableid);
var
oXL =
new
ActiveXObject(
"Excel.Application"
);
var
oWB = oXL.Workbooks.Add();
var
oSheet = oWB.ActiveSheet;
var
sel = document.body.createTextRange();
sel.moveToElementText(curTbl);
sel.select();
sel.execCommand(
"Copy"
);
oSheet.Paste();
oXL.Visible =
true
;
}
function
method2(tableid)
{
var
curTbl = document.getElementById(tableid);
var
oXL =
new
ActiveXObject(
"Excel.Application"
);
var
oWB = oXL.Workbooks.Add();
var
oSheet = oWB.ActiveSheet;
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
;
}
function
getXlsFromTbl(inTblId, inWindow){
try
{
var
allStr =
""
;
var
curStr =
""
;
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;
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++) {
for
(
var
i = 0; i < curTbl.rows[j].cells.length; 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 +=
"rn"
;
}
}
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 =
"table"
+
"_"
+ curYear + curMonth + curDate +
"_"
+ curHour + curMinute + curSecond +
".csv"
;
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(&
#39;Saveas', true, inName);
xlsWin.close();
}
function
method4(tableid){
var
curTbl = document.getElementById(tableid);
var
oXL;
try
{
oXL =
new
ActiveXObject(
"Excel.Application"
);
}
catch
(e){
alert(
"无法启动Excel!\n\n如果您确信您的电脑中已经安装了Excel,"
+
"那么请调整IE的安全级别。\n\n具体操作:\n\n"
+
"工具 → Internet选项 → 安全 → 自定义级别 → 对没有标记为安全的ActiveX进行初始化和脚本运行 → 启用"
);
return
false
;
}
var
oWB = oXL.Workbooks.Add();
var
oSheet = oWB.ActiveSheet;
var
sel = document.body.createTextRange();
sel.moveToElementText(curTbl);
sel.select();
sel.execCommand(
"Copy"
);
oSheet.Paste();
oXL.Visible =
true
;
var
fname = oXL.Application.GetSaveAsFilename(
"将table导出到excel.xls"
,
"Excel Spreadsheets (*.xls), *.xls"
);
oWB.SaveAs(fname);
oWB.Close();
oXL.Quit();
}
var
idTmr;
function
getExplorer() {
var
explorer = window.navigator.userAgent ;
if
(explorer.indexOf(
"MSIE"
) >= 0) {
return
&
#39;ie';
}
else
if
(explorer.indexOf(
"Firefox"
) >= 0) {
return
&
#39;Firefox';
}
else
if
(explorer.indexOf(
"Chrome"
) >= 0){
return
&
#39;Chrome';
}
else
if
(explorer.indexOf(
"Opera"
) >= 0){
return
&
#39;Opera';
}
else
if
(explorer.indexOf(
"Safari"
) >= 0){
return
&
#39;Safari';
}
}
function
method5(tableid) {
if
(getExplorer()==&
#39;ie')
{
var
curTbl = document.getElementById(tableid);
var
oXL =
new
ActiveXObject(
"Excel.Application"
);
var
oWB = oXL.Workbooks.Add();
var
xlsheet = oWB.Worksheets(1);
var
sel = document.body.createTextRange();
sel.moveToElementText(curTbl);
sel.select();
sel.execCommand(
"Copy"
);
xlsheet.Paste();
oXL.Visible =
true
;
try
{
var
fname = oXL.Application.GetSaveAsFilename(
"Excel.xls"
,
"Excel Spreadsheets (*.xls), *.xls"
);
}
catch
(e) {
print(
"Nested catch caught "
+ e);
} finally {
oWB.SaveAs(fname);
oWB.Close(savechanges =
false
);
oXL.Quit();
oXL =
null
;
idTmr = window.setInterval(
"Cleanup();"
, 1);
}
}
else
{
tableToExcel(tableid)
}
}
function
Cleanup() {
window.clearInterval(idTmr);
CollectGarbage();
}
var
tableToExcel = (
function
() {
var
uri = &
#39;data:application/vnd.ms-excel;base64,',
template = &
#39;<html><head><meta charset="UTF-8"></head><body><table>{table}</table></body></html>',
base64 =
function
(s) {
return
window.btoa(unescape(encodeURIComponent(s))) },
format =
function
(s, c) {
return
s.replace(/{(\w+)}/g,
function
(m, p) {
return
c[p]; }) }
return
function
(table, name) {
if
(!table.nodeType) table = document.getElementById(table)
var
ctx = {worksheet: name || &
#39;Worksheet', table: table.innerHTML}
window.location.href = uri + base64(format(template, ctx))
}
})()
</script>
</head>
<body>
<p >
<button type=
"button"
onclick=
"method1('tableExcel')"
>导出Excel方法一</button>
<button type=
"button"
onclick=
"method2('tableExcel')"
>导出Excel方法二</button>
<button type=
"button"
onclick=
"getXlsFromTbl('tableExcel','myp')"
>导出Excel方法三</button>
<button type=
"button"
onclick=
"method4('tableExcel')"
>导出Excel方法四</button>
<button type=
"button"
onclick=
"method5('tableExcel')"
>导出Excel方法五</button>
</p>
<p id=
"myp"
>
<table id=
"tableExcel"
width=
"100%"
border=
"1"
cellspacing=
"0"
cellpadding=
"0"
>
<tr>
<td colspan=
"5"
align=
"center"
>html 表格导出道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>
</p>
</body>
</html>