纯前端使用ExcelJS插件导出Excel

需求背景:antd表格table纯前端页面导出表格数据

官网地址: https://github.com/exceljs/exceljs

介绍ExcelJS及其应用场景

简要说明ExcelJS的功能和在前端开发中的常见用途,如动态生成报表、导出数据等。

环境配置与安装

列出所需的依赖项,包括ExcelJS库的安装方式(npm或CDN引入)。

示例命令:

bash 复制代码
npm install exceljs
基本导出流程

创建一个新的工作簿(Workbook),添加工作表(Worksheet),填充数据并导出为Excel文件。

示例代码:

javascript 复制代码
const ExcelJS = require('exceljs');
//创建工作簿和工作表
const workbook = new ExcelJS.Workbook();
const worksheet = workbook.addWorksheet('Sheet1');

//创建工作表的表头
//getColunm().value是表格表头数据: [{width:50,title:'序号'}, {width:50,title:'姓名'}]
const columnsData = getColunm().value.map((column, index) =>{
const width = column.width;
return {
    header: column.title,
    width: isNaN(width) ? 20: width/ 10,
}
worksheet.columns = columnsData;
高级功能:样式与格式

介绍如何设置单元格样式(字体、颜色、边框、对齐方式等)。

示例代码:

javascript 复制代码
//设置样式(文本垂直横向居中)
const headerRow = Worksheet.getRow(1);
headerRow._cells.forEach((cell) => {
    worksheet.getCell(cell._address).font = {
        family: 4,
        size: 10,
        bold:true,
    }
worksheet.getCell(cell._address).alignment = {vertical: 'middle', horizontal: 'center'};
})



//官网文档单个单元格设置样式
worksheet.getCell('A1').font = { bold: true, color: { argb: 'FF0000' } };
worksheet.getCell('A1').alignment = { vertical: 'middle', horizontal: 'center' };

最重要的:插入填充数据

javascript 复制代码
//填充数据
//resData.value是后端返回的数据
resData.value.forEach(v, i) =>[
    //前俩列是固定的,从第三列开始
    const keyvalue = ref([]);
    for (const key in v) {
        keyValue.value.push(v[key]);
    }
    //循环拿到数组对象插入数据
    worksheet.addRow(keyValue.value);
};

//获取每列数据,依次垂直居中对齐
worksheet.columns.forEach((column) =>{
    column.alignment = {vertical: 'middle',horizontal: 'center'};
};



//addRow插入,先插入第一行表头name和age,再次就是插入数据
worksheet.addRow(['Name', 'Age']);
worksheet.addRow(['Alice', 25]);
浏览器端导出与兼容性

介绍如何在浏览器中使用ExcelJS生成并下载Excel文件,兼容性问题及解决方案。

示例代码:

javascript 复制代码
workbook.xlsx.writeBuffer()
    .then(function (buffer){
        const blob = new Blob([buffer], { type: 'application/octet-stream'})

    // 下载 Excel 文件
    const filename= "下载的文件名.xlsx";
    if (typeof window.navigator.msSaveBlob !== 'undefined'){
        //兼容I浏览器
        window.navigator.msSaveBlob(blob, filename);
    } else {
            //其他浏览器
            const url = window.URL.createObjectURL(blob);
            const link = document.createElement('a');
            link.href = url;
            link.setAttribute('download',filename);
            document.body.appendChild(1ink);
            link.click();
            document.body.removeChild(1ink);
        }
    })
    .catch(e) => {
        console.log('err', e);
    }

最后如图:

总结与扩展

总结ExcelJS的优势,并推荐进一步学习资源或相关插件(如SheetJS、xlsx等)。

相关推荐
子兮曰1 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰1 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万1 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝1 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋1 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁1 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
汉堡大王95271 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大1 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师1 天前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端
沙蒿同学1 天前
我用 Go 搭了一条 AI Agent 流水线:从 1 张商品图到一整套淘宝详情页
前端·javascript·后端