根据table导出excel

记录一下excel前台导出

/**
 * 根据json导出excel
 * @param fileName 导出文件名
 * @param columns 标题列
 * @param gridData 导出数据
 * @param thead 表头html
 */
function exportExcelByJson(fileName, columns, gridData, thead) {
    //json
    let exportColumns = typeof columns != 'object' ? JSON.parse(columns) : columns;
    let exportData = typeof gridData != 'object' ? JSON.parse(gridData) : gridData;

    // 拼接数据
    let table = '<table>';

    // 传入表头html不为空使用传入表头,否则根据标题列生成表头
    if (thead){
        table += thead;
    }else {
        //设置表头
        let row = "<tr>";
        exportColumns.forEach(function (column) {
            // 每个单元格都可以指定样式color:red生成出来的就是 红色的字体了.
            row += "<td style='" + column.titleStyle + "'>" + column.text + '</td>';
        })
        //列头结束
        table += row + "</tr>";
    }


    //设置数据
    exportData.forEach(function (item) {
        let row = "<tr>";
        exportColumns.forEach(function (column) {
            let value = item[column.name] ? item[column.name] : "";
            row += '<td style="' + column.dataStyle + '">' + value + '</td>';//将值放入td
        })
        //将td 放入tr,将tr放入table
        table += row + "</tr>";
    })
    //table结束
    table += "</table>";

    exportExcelByTable(fileName, table)
}

/**
 * 根据table导出excel
 * @param fileName 文件名
 * @param table table的dom
 */
function exportExcelByTable(fileName, table) {
    // 拼接html
    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 += '<meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8">';
    excelFile += '<meta http-equiv="content-type" content="application/vnd.ms-excel';
    excelFile += '; charset=UTF-8">';
    excelFile += "<head>";
    excelFile += "<!--[if gte mso 9]>";
    excelFile += "<xml>";
    excelFile += "<x:ExcelWorkbook>";
    excelFile += "<x:ExcelWorksheets>";
    excelFile += "<x:ExcelWorksheet>";
    excelFile += "<x:Name>";
    excelFile += "{worksheet}";
    excelFile += "</x:Name>";
    excelFile += "<x:WorksheetOptions>";
    excelFile += "<x:DisplayGridlines/>";
    excelFile += "</x:WorksheetOptions>";
    excelFile += "</x:ExcelWorksheet>";
    excelFile += "</x:ExcelWorksheets>";
    excelFile += "</x:ExcelWorkbook>";
    excelFile += "</xml>";
    excelFile += "<![endif]-->";
    excelFile += "</head>";
    excelFile += "<body>";
    excelFile += table;//将table 拼接
    excelFile += "</body>";
    excelFile += "</html>";

    var uri = 'data:application/vnd.ms-excel;charset=utf-8,' + encodeURIComponent(excelFile);

    //创建a标签
    var link = document.createElement("a");
    //指定url
    link.href = uri;
    //设置为隐藏
    link.style = "visibility:hidden";
    //指定文件名和文件后缀格式
    link.download = fileName + ".xls";
    //追加a标签
    document.body.appendChild(link);
    //触发点击事件
    link.click();
    //移除a标签
    document.body.removeChild(link);
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值