js导出页面表格数据到Excel

时间:2025-02-15 07:49:02

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