IE下可能会出现格式问题 建议使用其他浏览器
IE
this.$confirm('建议使用谷歌浏览器导出,IE导出可能出现格式问题,是否继续','提示',{
confirmButtonText:'是',
cancelButtonText:'否',
callback:function(action){
if(action == 'confirm'){
var curTbl = document.getElementsByClassName('el-table__body')[0];
var curTblHead = document.getElementsByClassName('el-table__header')[0];
curTbl.style.border="1px";
curTbl.style.backgroundClip="padding-box";
curTbl.style.position="relative";
var oXL;
try{
oXL = new ActiveXObject("Excel.Application"); //创建AX对象excel
}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 Lenr = curTbl.rows.length;
var headLenr = curTblHead.rows.length;
//我这里使用的是element的table 他的表头和表主体是分开的 所以需要分别推入oSheet中
for (i = 0; i < headLenr; i++){
var headLenc = curTblHead.rows(i).cells.length;
for (j = 0; j < headLenc; j++){
oSheet.Cells(i + 1, j + 1).value = curTblHead.rows(i).cells(j).innerText;
}
}
for (i = 0; i < Lenr; i++){
var Lenc = curTbl.rows(i).cells.length;
for (j = 0; j < Lenc; j++){
oSheet.Cells(i + 2, j + 1).value = curTbl.rows(i).cells(j).innerText;
}
}
oXL.Visible = true;
}
else{
$vue.$message({
type: 'info',
message: '取消导出'
});
}
}
})
其他浏览器
tableToExcel:function(tableid,name,filename){
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><!--[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">',
base64 = function(s) {
return window.btoa(unescape(encodeURIComponent(s)))
},
// 下面这段函数作用是:将template中的变量替换为页面内容ctx获取到的值
format = function(s, c) {
return s.replace(/{(\w+)}/g,
function(m, p) {
return c[p];
}
)
};
/**/
//table = document.getElementById(table)
table = document.getElementsByClassName('el-table__body')[0];
tableHead = document.getElementsByClassName('el-table__header')[0];
// 获取表单的名字和表单查询的内容
var ctx = {worksheet: name || 'Worksheet', table: tableHead.innerHTML + table.innerHTML};
// format()函数:通过格式操作使任意类型的数据转换成一个字符串
// base64():进行编码
window.location.href = uri + base64(format(template, ctx))
/**/
},