1.解决了无法自定义Excel文件名的问题
2.解决了界面身份证号码等比较长的数字导出Excel后成科学计数法的问题。
3.兼容常见浏览器
/**公用方法
* 方法:exportToExcel(tableid,filename,sheetname)
* 参数:tableid 表格ID,filename 文件名,sheet名
* 功能:导出界面表格中的数据到Excel
* 返回:
* Auther:king
* Rem: 2017-6-7 add
*/
function exportToExcel(tableid,filename,sheetname){
if(getExplorer()=='ie'){
var curTbl = (tableid);
var oXL = new ActiveXObject("");
var oWB = ();
var xlsheet = (1);
var sel = ();
(curTbl);
();
("Copy");
();
= true;
try{
var fname = (filename, "Excel Spreadsheets (*.xls), *.xls");
} catch (e){
print("Nested catch caught " + e);
} finally {
(fname);
(savechanges = false);
();
oXL = null;
idTmr = ("Cleanup();", 1);
}
}else{
tableToExcel(tableid,filename,sheetname)
}
}
function Cleanup(){
(idTmr);
CollectGarbage();
}
/**公用方法
* 方法:tableToExcel(table,name,filename)
* 参数:tableid 表格ID
* 功能:将html的table转成Excel的data协议类型数据 table 是HTML DOM Document 对象 name 是sheet的名称
* 返回:
* Auther:king
* Rem: 2017-6-7 add
*/
var tableToExcel = (function (){
var uri = 'data:application/-excel;base64,',
template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http:///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>',
base64 = function (s) {
return (unescape(encodeURIComponent(s)));
},
format = function (s, c){
return (/{(\w+)}/g, function (m, p) { return c[p]; });
};
return function (table,filename,sheetname){
//这里创建一个<a/>标记利用a标记的download属性来自定义Excel文件名,解决button按钮触发下载无法自定义Excel文件名的问题
var a = $('<a style="display:none;"/>');
$().append(a);
if (!) table = (table);
var ctx = { worksheet: sheetname || 'Worksheet', table: }
("href",uri + base64(format(template, ctx)));
("download",filename);//这里是关键所在,当点击之后,设置a标签的属性,这样就可以更改excel文件的名字了
("dlink").click();
}
})();
<script type="text/javascript">
$(document).ready(function () {
$(function(){
$('#btnExport').on('click', function(){
exportToExcel('contentTable','测试1','xxxxx等等x');
});
});
});
</script>
注意:利用 <td style="mso-number-format:'\@';"> 处理 界面身份证号码等比较长的数字导出Excel后成科学计数法的问题。
参考文档
:///nihaoqiulinhe/article/details/53065005
:///nihaoqiulinhe/article/details/53537540