您的位置:首页 > Web前端 > JavaScript

原生JS实现table数据,转化为EXCEL表格展现

2017-09-25 12:17 573 查看
function exportExcel(tableid) {//整个表格拷贝到EXCEL中
if(!!window.ActiveXObject||"ActiveXObject" in window){
var oXL = new ActiveXObject("Excel.Application");
var oWB = oXL.Workbooks.Add();
var oSheet = oWB.ActiveSheet;
var table = document.getElementById(tableid);
var hang = table.rows.length;
var lie = table.rows(0).cells.length;
for (i=0;i<hang;i++){
for (j=0;j<lie;j++){
oSheet.Cells(i+1,j+1).value = table.rows(i).cells(j).innerText;
}
}
oXL.Visible = true;
oXL.UserControl = true;
}else{
alert("其他");
tableToExcel(tableid)
}
};
var tableToExcel = (function(){
var uri = 'data:application/vnd.ms-excel;base64,',
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><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><!--[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>',
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 || 'Worksheet', table: table.innerHTML}
window.location.href = uri + base64(format(template, ctx))
}
})();

相信大家都做过很多导出数据到excel的操作了,上面这做法也是一个比较通用的方法之一,但是笔者认为上面这JS导出
的方法,只能静态导出当前页面table所呈现的数据量,如果数据量过多存在分页的情况下,则出现瓶颈无法导出全部(我猜测的,暂没测试)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐