• js导出excel文件


    <div id="tablesDiv">
        <table id="tabDiv1">
            <tbody><tr>
                <td>ID</td>
                <td>姓名</td>
                <td>年龄</td>
            </tr>
            <tr>
                <td>0001</td>
                <td>张三</td>
                <td>24</td>
            </tr>
        </tbody></table>
        <table id="tabDiv2">
            <tbody><tr>
                <td>ID</td>
                <td>姓名</td>
                <td>年龄</td>
            </tr>
            <tr>
                <td>0002</td>
                <td>李四</td>
                <td>24</td>
            </tr>
        </tbody></table>
        <table id="tabDiv3">
            <tbody><tr>
                <td>ID</td>
                <td>姓名</td>
                <td>年龄</td>
            </tr>
            <tr>
                <td>0003</td>
                <td>王五</td>
                <td>24</td>
            </tr>
        </tbody></table>
        <button onclick="exp();">export to excel...</button>
    </div>
    #tabDiv1,#tabDiv2,#tabDiv3 {
        border:1px solid pink;
        margin:10px auto;
        width:100%;
    }
    button {
        width:100%;
    }
     function exp() {
         tablesToExcel(['tabDiv1', 'tabDiv2', 'tabDiv3'], ['yy', 'bb', 'cc'], "abc.xls", "Excel");
     }
     //导出excel包含多个sheet
     //tables:tableId的数组;wsbames:sheet的名字数组;wbname:工作簿名字;appname:Excel
     function tablesToExcel(tables, wsnames, wbname, appname) {
    
         var uri = 'data:application/vnd.ms-excel;base64,',
             tmplWorkbookXML = '<?xml version="1.0"?><?mso-application progid="Excel.Sheet"?><Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">' +
             '<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"><Author>Axel Richter</Author><Created>{created}</Created></DocumentProperties>' +
             '<Styles>' +
             '<Style ss:ID="Currency"><NumberFormat ss:Format="Currency"></NumberFormat></Style>' +
             '<Style ss:ID="Date"><NumberFormat ss:Format="Medium Date"></NumberFormat></Style>' +
             '</Styles>' +
             '{worksheets}</Workbook>',
             tmplWorksheetXML = '<Worksheet ss:Name="{nameWS}"><Table>{rows}</Table></Worksheet>',
             tmplCellXML = '<Cell{attributeStyleID}{attributeFormula}><Data ss:Type="{nameType}">{data}</Data></Cell>',
             base64 = function(s) {
                 return window.btoa(unescape(encodeURIComponent(s)))
             },
             format = function(s, c) {
                 return s.replace(/{(w+)}/g, function(m, p) {
                     return c[p];
                 })
             }
    
         var ctx = "";
         var workbookXML = "";
         var worksheetsXML = "";
         var rowsXML = "";
    
         for (var i = 0; i < tables.length; i++) {
             if (!tables[i].nodeType)
                 tables[i] = document.getElementById(tables[i]);
    
             //           控制要导出的行数
             for (var j = 0; j < tables[i].rows.length; j++) {
                 rowsXML += '<Row>';
    
                 for (var k = 0; k < tables[i].rows[j].cells.length; k++) {
                     var dataType = tables[i].rows[j].cells[k].getAttribute("data-type");
                     var dataStyle = tables[i].rows[j].cells[k].getAttribute("data-style");
                     var dataValue = tables[i].rows[j].cells[k].getAttribute("data-value");
                     dataValue = (dataValue) ? dataValue : tables[i].rows[j].cells[k].innerHTML;
                     var dataFormula = tables[i].rows[j].cells[k].getAttribute("data-formula");
                     dataFormula = (dataFormula) ? dataFormula : (appname == 'Calc' && dataType == 'DateTime') ? dataValue : null;
                     ctx = {
                         attributeStyleID: (dataStyle == 'Currency' || dataStyle == 'Date') ? ' ss:StyleID="' + dataStyle + '"' : '',
                         nameType: (dataType == 'Number' || dataType == 'DateTime' || dataType == 'Boolean' || dataType == 'Error') ? dataType : 'String',
                         data: (dataFormula) ? '' : dataValue,
                         attributeFormula: (dataFormula) ? ' ss:Formula="' + dataFormula + '"' : ''
                     };
                     rowsXML += format(tmplCellXML, ctx);
                 }
                 rowsXML += '</Row>'
             }
             ctx = {
                 rows: rowsXML,
                 nameWS: wsnames[i] || 'Sheet' + i
             };
             worksheetsXML += format(tmplWorksheetXML, ctx);
             rowsXML = "";
         }
    
         ctx = {
             created: (new Date()).getTime(),
             worksheets: worksheetsXML
         };
         workbookXML = format(tmplWorkbookXML, ctx);
    
         //       查看后台的打印输出
         //console.log(workbookXML);
    
         var link = document.createElement("A");
         link.href = uri + base64(workbookXML);
         link.download = wbname || 'Workbook.xls';
         link.target = '_blank';
         document.body.appendChild(link);
         link.click();
         document.body.removeChild(link);
    
     }

    代码出自:JQ22.com

  • 相关阅读:
    转:Swagger2自动生成接口文档和Mock模拟数据
    InfluxDB
    springboot application.properties文件加载顺序
    maven surefire插件与testng
    spring-boot项目学习路径
    collection 与stream与lambd表达式的结合使用
    转:Java中Lambda表达式的使用
    RPC之Thrift 介绍及java实例
    win10中shift+右键,在此处打开cmd窗口
    激活xmind的方法
  • 原文地址:https://www.cnblogs.com/mystudy/p/9987312.html
Copyright © 2020-2023  润新知