Web excel导出 Linux乱码 数字导出格式显示错误处理

本来之前写过一个JS导出程序,但是也是网上东拼西凑写出来了,这两天有需求要写个excel导出,然后就出现一堆的问题,就准备记录下来。

原谅我好多东西也是网上百度别人的,但是都汇总了一下,也好给大家看,开始正文:

 js导出excel的两种方法:

方法一:

/*

*@tableId: table的Id

*@fileName: 生成excel文件

* ie浏览器无法导出

*/

function tableToExcel(tableID,fileName){

var table = document.getElementById(tableID);

var excelContent = table.innerHTML;

var excelFile = "<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'>";

excelFile += "<head><meta 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>";

excelFile += "<body><table>";

excelFile += excelContent;

excelFile += "</table></body>";

excelFile += "</html>";

console.log(excelFile)

var link = "data:application/vnd.ms-excel;base64," + base64(excelFile);

var a = document.createElement("a");

a.download = fileName+".xls";

a.href = link;

a.click();

}

function base64 (content) {

return window.btoa(unescape(encodeURIComponent(content)));

}

 

方法二:

/*

*需要引入:jquery.table2excel.js

*

*@$("#tableId"): table的id

*/

$('#btnExport').on('click', function() {

$("#tableId").table2excel({

exclude: ".noExl",

name: "Excel Document Name",

filename: "myFileName",

exclude_img: true,

exclude_links: true,

exclude_inputs: true

});

});

 

以上两种方法在IE浏览器中无法正常使用

若需要支持ie需加以下代码:

if(!!window.ActiveXObject || "ActiveXObject" in window) {//判断是否为ie览器

var curTbl = document.getElementById("ta");

var oXL = new ActiveXObject("Excel.Application");

//创建AX对象excel

var oWB = oXL.Workbooks.Add();

//获取workbook对象

var xlsheet = oWB.Worksheets(1);

//激活当前sheet

var sel = document.body.createTextRange();

sel.moveToElementText(curTbl);

//把表格中的内容移到TextRange中

sel.select;

//全选TextRange中内容

sel.execCommand("Copy");

//复制TextRange中内容

xlsheet.Paste();

//粘贴到活动的EXCEL中

oXL.Visible = true;

//设置excel可见属性

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);

//xls.visible = false;

oXL.Quit();

oXL = null;

//结束excel进程,退出完成

//window.setInterval("Cleanup();",1);

idTmr = window.setInterval("Cleanup();", 1);

}

}

 

再把遇到的问题罗列一下:

问题1:遇到导出excel表格时,银行账户号数字过长,导出的数字串变为计数法形式

解决方案一:

<td style="mso-number-format:'\@';">100821199909091234</td>

增加了  style="mso-number-format:'\@';" 样式后 可以解决 

 

解决方案二:

原来的:excelFile += "<body><table>";

修改为:excelFile += '<body><table style="vnd.ms-excel.numberformat:@">';

style="vnd.ms-excel.numberformat:@"的作用是把数据转换文本格式

问题2:js输出汉字乱码问题

解决方案一:

原来的:excelFile += "<head><meta ><!--[if gte mso 9]>

修改为:excelFile += "<head><meta charset='UTF-8'><!--[if gte mso 9]>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值