exceljs库实现excel表样式定制化

embedded/2024/10/18 0:28:08/

概览

xlsx 是前端最热门的 Excel 导出方案,又叫做 SheetJs,默认不支持修改 Excel 的样式。而exceljs库就可以做到自定义excel表样式,下面来介绍一下其使用方法

一. 完整示例

代码示例

javascript">const exportTemplate2 = () => {  // 创建工作簿  const workbook = new ExcelJS.Workbook();  const worksheet = workbook.addWorksheet('sheet1');  // 定义列  worksheet.columns = [  { header: 'Id11111111111111111111', key: 'id', width: 20 },  { header: 'Name233', key: 'name', width: 20 },  { header: 'D.O.B999', key: 'dob', width: 20 }  ];  // 添加二级表头  worksheet.addRow(['二级表头A', '二级表头B', '二级表头C']);  // 填充数据  const columnData = [  { id: 15, name: 99, dob: '2024-04-16' },  { id: 50, name: 101, dob: '2024-04-17' }  ];  columnData.forEach(item => {  worksheet.addRow(item);  });  // 设置第一行表头背景色和字体颜色  worksheet.getRow(1).eachCell({ includeEmpty: true }, (cell, colNumber) => {  cell.fill = {  type: 'pattern',  pattern: 'solid',  fgColor: { argb: (colNumber === 1 || colNumber === 2) ? 'FF79bbff' : 'FF95d475' }  };  cell.font = {  size: 14,  color: { argb: 'FFFFFFFF' } // 白色  };  });  // 设置第二行表头字体颜色  worksheet.getRow(2).eachCell({ includeEmpty: true }, (cell) => {  cell.font = {  size: 14,  color: { argb: 'FFF89898' } // 浅红色  };  });  // 应用自动筛选  worksheet.autoFilter = 'A1:C2'; // 筛选整个表头区域  // 合并单元格  worksheet.mergeCells("A1:C1"); // 合并整个第一行  // 添加条件格式  worksheet.addConditionalFormatting({  ref: "B3:B4",  rules: [  {  type: 'cellIs',  operator: 'lessThan',  priority: 1,  formulae: ['100'],  style: {  fill: {  type: 'pattern',  pattern: 'solid',  fgColor: { argb: 'FF95d475' },  },  },  },  ],  });  // 添加求和公式到A5单元格  worksheet.getCell('A5').value = {  formula: 'SUM(A3:A4)',  result: null // ExcelJS会自动计算结果,无需显式设置result为null  };  // 计算工作表  console.log(worksheet,'worksheet')// 写入Excel文件  workbook.xlsx.writeBuffer().then((buffer) => {  const blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });  saveAs(blob, 'ExcelJS.xlsx');  }).catch((error) => {  console.error('Error exporting Excel file:', error);  });  
};  

二. 设置表头和填充数据

javascript"> // 定义列  worksheet.columns = [  { header: 'Id11111111111111111111', key: 'id', width: 20 },  { header: 'Name233', key: 'name', width: 20 },  { header: 'D.O.B999', key: 'dob', width: 20 }  ];  // 添加二级表头  worksheet.addRow(['二级表头A', '二级表头B', '二级表头C']);  // 填充数据  const columnData = [  { id: 15, name: 99, dob: '2024-04-16' },  { id: 50, name: 101, dob: '2024-04-17' }  ];  columnData.forEach(item => {  worksheet.addRow(item);  });  

worksheet.columns中

header: 表头显示的内容;
key: 表格内容对应的属性key,和赋值的columnData中的属性名关联起来;
width:设置单元格的宽度。

三. 设置表头样式

javascript">// 设置第一行表头背景色和字体颜色  worksheet.getRow(1).eachCell({ includeEmpty: true }, (cell, colNumber) => {  cell.fill = {  type: 'pattern',  pattern: 'solid',  fgColor: { argb: (colNumber === 1 || colNumber === 2) ? 'FF79bbff' : 'FF95d475' }  };  cell.font = {  size: 14,  color: { argb: 'FFFFFFFF' } // 白色  };  });  // 设置第二行表头字体颜色  worksheet.getRow(2).eachCell({ includeEmpty: true }, (cell) => {  cell.font = {  size: 14,  color: { argb: 'FFF89898' } // 浅红色  };  });  

argb: 前面两位为透明度设置,通常设置成FF就行,代表不透明,比如黑色十六进制为#000000,转换成argb格式转成FF000000即可。

四. 总结

抛砖引玉,以上示例是我们日常工作较常见的场景,更多功能大家可以继续探索。


http://www.ppmy.cn/embedded/6974.html

相关文章

webpack源码分析——enhanced-resolve库之cdUp函数

一、 cdUp函数 函数功能 该函数寻找上层目录,每次调用函数时对输入的路径进行一次寻找上级目录。如果没有找到返回null 二、函数分析 传入的directory判读是否为‘/’如果是直接返回nullif (directory "/") return null;获取‘/’和‘\’在directory 中…

Python基于循环神经网络的情感分类系统设计与实现,附源码

博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#x1f3…

stm32中的中断优先级

在工作中使用到多个定时器中断,由于中断的中断优先级不熟悉导致出错,下面来写一下中断的一些注意事项。 一、中断的分类 1、EXTI外部中断:由外部设备或外部信号引发,例如按键按下、外部传感器信号变化等。外部中断用于响应外部事件,并及时处理相关任务。 2、内部中断:…

9月BTE第8届广州国际生物技术大会暨展览会,全媒体聚焦下的高精尖行业盛会

政策春风助力,共迎大湾区生物医药行业50亿红利 今年3月“创新药”首次写入国务院政府工作报告之后,广州、珠海、北京多地政府纷纷同步出台了多项细化政策,广州最高支持额度高达50亿元,全链条为生物医药产业提供资金支持&#xff…

Spring之CGLIB和JDK动态代理底层实现

目录 CGLIB 使用示例-支持创建代理对象,执行代理逻辑 使用示例-多个方法,走不同的代理逻辑 JDK动态代理 使用示例-支持创建代理对象,执行代理逻辑 ProxyFactory 如何自动在CGLIB和JDK动态代理转换 使用示例-使用CGLIB代理方式 使用示…

MongoDB的使用

一、Spring Boot集成MongoDB 1 引用依赖包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency> 2 配置文件配置mongodb资料 # MongoDB连接信息 spring.…

存储竞赛,角逐未来

随着人工智能&#xff08;AI&#xff09;和大数据驱动的海量数据需求&#xff0c;对存储技术的要求也在不断提高。在此背景下&#xff0c;各大存储芯片巨头之间的技术竞赛日益激烈。 在NAND闪存领域&#xff0c;企业关注的重点在于层数的突破。近日&#xff0c;《韩国经济日报》…

Meta通过开源Llama 3 LLM提高了标准

Meta 推出了 Llama 3,这是其最先进的开源大型语言模型(LLM)的下一代产品。这家科技巨头声称,Llama 3 在现实场景中建立了新的性能基准,超越了之前行业领先的模型,如 GPT-3.5。 Meta 在一篇博文中宣布了这一发布,并表示:"通过 Llama 3,我们致力于打造与当今最好的专有模型…