纯前端导出带样式的excel:exceljs

纯前端导出带样式的excel:exceljs

为什么使用exceljs?

xlsx虽然导出表格很方便,但是无法设置表格样式。想要设置表格样式的话需要使用xlsx的专业版或者使用xlsx-style。专业版需要付费,xlsx-style添加依赖时会报错,还需要修改源代码。 所以我选择使用exceljs,优点如下:免费,可导出带样式的表格,有中文文档。
附带exceljs文档地址: exceljs

添加依赖

(1)添加exceljs的依赖
npm install exceljs
(2)添加file-saver的依赖,用来在浏览器上导出表格。
npm install file-saver
(3) 引入:

import ExcelJS from 'exceljs';
import saveAs from 'file-saver';

导出excel示例

需求:导出带边框的excel
(1)创建工作簿

const workbook = new ExcelJS.Workbook();

(2)添加工作表

const worksheet= workbook.addWorksheet('My Sheet');

(3)定义列,在这一步可以设置列宽。

worksheet.columns = [
  { header: 'Id', key: 'id', width: 10 },
  { header: 'Name', key: 'name', width: 32 },
  { header: 'D.O.B.', key: 'DOB', width: 10 }
];

上面的columns数组代表了这个excel表格中设置了3列,header是这一列的标题,会显示到表格中,也可以去掉header。key是这一列的索引,width是这一列的宽度。
(4)添加行数据
添加行数据需要用到工作表的addRow和addRows方法。addRow可添加一行数据,addRows可添加多行数据。
addRow方法的参数是这一行的数据,有两种形式。第一种是键值对的形式,键需要和定义列时的key保持一致。另一种是数组的形式,数组中的值会依次在这一行展开。

1: worksheet.addRow({id: 2, name: 'Jane Doe', dob: new Date(1965,1,7)});
2: worksheet.addRow([3, 'Sam', new Date()]);

addRows方法可以同时添加多行。
(5)为表格设置边框
设置边框用到了条件格式化,条件格式化允许工作表根据单元格值或任意公式显示特定的样式,图标等。条件格式设置规则是在工作表级别添加的,通常会覆盖一系列单元格。可以将多个规则应用于给定的单元格范围,并且每个规则都将应用自己的样式。

worksheet.addConditionalFormatting({
  ref: 'A1:C3',
  rules: [
    {
      type: 'expression',
      formulae: ['true'],
      style: {border: { top: {style:'thin'},left: {style:'thin'},bottom: {style:'thin'},right: {style:'thin'}}
    }
  ]
})

属性描述
上述代码表达的含义是对于A1到C3范围内的每一个单元格,都根据给出的formulae进行判断,如果判断结果为true,则对此单元格应用style规定的样式。
(6)写 XLSX文件

workbook.xlsx.writeBuffer().then( buffer => {
          saveAs(
            new Blob([buffer], { type: "application/octet-stream" }),
            `123.xlsx`
          );
        }

调用writeBuffer方法,返回一个Promise。成功回调中可获取此excel文件的buffer。然后调用file-saver提供的saveAs方法,此excel文件就可以在浏览器上下载了。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要利用exceljs前端数据导出Excel,你可以按照以下步骤进行操作: 1. 首先,确保你已经安装了exceljs和file-saver这两个依赖库。你可以使用npm命令进行安装,如下所示: ``` npm install exceljs npm install file-saver ``` 2. 在你的前端代码中引入ExcelJS和saveAs: ``` import ExcelJS from 'exceljs'; import saveAs from 'file-saver'; ``` 3. 创建一个Excel对象,并定义导出Excel的方法。你可以参考下面的代码示例: ``` const exportExcel = () => { const workbook = new ExcelJS.Workbook(); const worksheet = workbook.addWorksheet('Sheet 1'); // 添加表头 const headerRow = worksheet.addRow(header); // 设置自定义表头 headerRow.eachCell((cell, index) => { cell.value = customHeader\[index - 1\]; }); // 添加数据 tableData.forEach((data) => { const row = worksheet.addRow(Object.values(data)); }); // 合并单元格 mergeList.forEach((merge) => { worksheet.mergeCells(merge.startRow, merge.startColumn, merge.endRow, merge.endColumn); }); // 导出Excel文件 workbook.xlsx.writeBuffer().then((buffer) => { const blob = new Blob(\[buffer\], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }); saveAs(blob, '表格文件名称.xlsx'); }); }; ``` 4. 在你的页面中调用exportExcel方法来触发导出操作。你可以在按钮的点击事件中调用该方法,如下所示: ``` <button @click="exportExcel">导出</button> ``` 通过以上步骤,你就可以利用exceljs前端数据导出Excel文件了。请注意,你需要根据你的具体需求来调整代码中的变量和参数,以适应你的数据结构和导出需求。 #### 引用[.reference_title] - *1* *3* [使用ExcelJS实现excel前端导出功能(Vue3+TS)](https://blog.csdn.net/weixin_50543490/article/details/131207514)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [前端导出样式excelexceljs](https://blog.csdn.net/shangshuxian1999/article/details/129087172)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值