1. 程式人生 > >【JS】json匯出到excel,自定義檔名和字尾名

【JS】json匯出到excel,自定義檔名和字尾名

json匯出excel表格


HTML

<el-button type="danger" class="ml10 fr" @click="exportForm">匯出表格</el-button>

JS

表格輸出的數字,如果太長,會自動計算,解決辦法:
在td上加上樣式 style=“mso-number-format:’\@’”

//匯出表格
exportForm(){
    let that = this;
    let jsonData = [];
    for(let i in this.tableList){
        let tr = {
            times: this.tableList[i].times,
            pv: this.tableList[i].pv,
            uv: this.tableList[i].uv,
            click: this.tableList[i].click,
            firstPay: this.tableList[i].firstPay,
            firstAmount: this.tableList[i].firstAmount,
            shard: this.tableList[i].shard,
        };
        jsonData.push(tr);
        console.log(tr)
    }
    //列標題
    var str = '';
    str += '<tr><th>時間</th><th>訪問量(pv)</th><th>訪問人數(uv)</th><th>預購點選量</th><th>已付定金人數</th><th>已收到定金(元)</th><th>分享次數</th></tr>';
    //迴圈遍歷,每行加入tr標籤,每個單元格加td標籤
    for(let i = 0 ; i < jsonData.length ; i++ ){
        str+='<tr>';
        for(let item in jsonData[i]){
            //增加\t為了不讓表格顯示科學計數法或者其他格式
            str+=`<td style="mso-number-format:'\\@'">${ jsonData[i][item] + '\t'}</td>`;
        }
        str+='</tr>';
    }
    str += '<tr><td></td></tr>';
    str += '<tr><td>總計:</td><td style="mso-number-format:\'\\@\'">'+this.sum.pv+'</td><td style="mso-number-format:\'\\@\'">'+this.sum.uv+'</td><td style="mso-number-format:\'\\@\'">'+this.sum.click+'</td><td style="mso-number-format:\'\\@\'">'+this.sum.firstPay+'</td><td style="mso-number-format:\'\\@\'">'+this.sum.firstAmount+'</td><td style="mso-number-format:\'\\@\'">'+this.sum.shard+'</td></tr>';
    var worksheet = 'Sheet1'; //Worksheet名
    var uri = 'data:application/vnd.ms-excel;base64,';

    //下載的表格模板資料
    var 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>${str}</table></body></html>`;
    //下載模板
    // window.location.href = uri + this.base64(template)
    var link = document.createElement("a");
    link.href = uri + this.base64(template);

    link.download = '表格下載' + ".xls";
    link.style = "visibility:hidden";
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
},
base64 (s) {
    return window.btoa(unescape(encodeURIComponent(s)))
},