导出Excel表格文件

今天给大家分享一个导出excel文件表格的文章

这次使用的方法是ExcelJs,个人感觉这个使用还是可以的,主要的问题就是导出成功后会报错,提示文件损坏或者是扩展名错误。目前还没有找到代码逻辑的解决的方法,如果有好的方法,大家可以推荐给我,我也来学习一下。(这个问题解决方法:把文件名后缀改成xxxx.xlsx。例:导出案例.xlsx)

安装:npm install exceljs

//data是主题数据,

数据格式是:[{导出:'11111'}]

const exportToExcel = (data: any) => {

        const date = new Date()

//导出后文件名称

        const sheetName = `导出文件_${moment(date).format('YYYYMMDDHHmmss')}`;

        const headerName = "RequestsList";

        const workbook = new ExcelJs.Workbook();

        const sheet = workbook.addWorksheet(sheetName, {

//是否显示表格

            views: [{ showGridLines: true }]

        });

        const columnArr = [];

        for (let i in data[0]) {

            let tempObj = { name: "" };

            tempObj.name = i;

            columnArr.push(tempObj);

        }

        sheet.addTable({

            name: headerName,

            ref: "A1", // 主要数据从A5单元格开始

            headerRow: true,

            totalsRow: false,

            style: {

                theme: "TableStyleMedium2",

                showRowStripes: true,

            },

            columns: columnArr ? columnArr : [{ name: "" }],

            rows: data?.map((e: any) => {

                let arr = [];

                for (let i in e) {

                    arr.push(e[i]);

                }

                return arr;

            }),

        });

//表头的宽度

        sheet.columns = sheet.columns.map((e: any) => {

            const expr = e.values[5];

            if (expr) {

                return { width: 20 }

            } else {

                return { width: 20 }

            }

        });

        const writeFile = (fileName: any, content: any) => {

            const link = document.createElement("a");

            const blob = new Blob([content], {

                type: "application/vnd.ms-excel;charset=utf-8;"

            });

            link.download = fileName;

            link.href = URL.createObjectURL(blob);

            link.click();

        };

        workbook.xlsx.writeBuffer().then((buffer) => {

            writeFile(sheetName, buffer);

        });

    };

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值