xlsx将多个table导入一个sheet页

这篇博客介绍了一个将多个网页表格数据合并到单一Excel工作表的方法。通过xlsx库,作者首先将每个表格转换为worksheet,然后使用sheet_to_json转换成json对象,接着将多个json对象拼接,并通过json_to_sheet创建新的工作表。最终,所有数据被整合到一个名为'汇总统计'的Excel工作表中并导出。
摘要由CSDN通过智能技术生成

最近有个需求将一个web页面上多个table显示的数据导入到一个excel的sheet页面上面。

发现目前给的demo都是直接将table导出到sheet上。

扒拉了一下xlsx的源码,发现也没提供类似功能。只有table_to_sheet和table_add_dom方法,两个方法如果多次指定table,都会被后一个覆盖前一个,无法达成目的。

后来想了个这种办法,利用xlsx里的方法,现将table转换成worksheet,然后利用sheet_to_json方法,将其转换成json对象。之后再讲多个json对象连接,然后用json_to_sheet转换成sheet对象,就能达成目的了。代码如下:

var xlsxParam = {
            raw: true
        }; //转换成excel时,使用原始的格式,这样导出的时候数字过长不会变成科学计数法
        let workbook = XLSX.utils.book_new();
        

        let ws1 = XLSX.utils.table_to_sheet(document.querySelector('#resultTable1'), xlsxParam);
        let ws2 = XLSX.utils.table_to_sheet(document.querySelector('#resultTable2'), xlsxParam);
        let ws3 = XLSX.utils.table_to_sheet(document.querySelector('#resultTable3'), xlsxParam);
        let ws4 = XLSX.utils.table_to_sheet(document.querySelector('#resultTable4'), xlsxParam);

        let a = XLSX.utils.sheet_to_json(ws1, { header: 1 })
        let b = XLSX.utils.sheet_to_json(ws2, { header: 1 })
        let c = XLSX.utils.sheet_to_json(ws3, { header: 1 })
        let d = XLSX.utils.sheet_to_json(ws4, { header: 1 })

        a = a.concat(['']).concat(b).concat(['']).concat(c).concat(['']).concat(d)
        let worksheet = XLSX.utils.json_to_sheet(a, { skipHeader: true })
        XLSX.utils.book_append_sheet(workbook, worksheet, '汇总统计');   
        let wbout = XLSX.write(workbook, {
            bookType: 'xlsx',
            bookSST: true,
            type: 'array'
        });
        try {
            FileSaver.saveAs(
            new Blob([wbout], {
                type: 'application/octet-stream;charset=utf-8"'
            }), '汇总统计表.xlsx');
        } catch (e) {
            if (typeof console !== 'undefined') console.log(e, wbOut);
        }
        return wbout;

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值