exceljs库实现excel表样式定制化

ops/2024/9/20 9:21:43/ 标签: 前端, javascript, exceljs

概览

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/ops/6881.html

相关文章

我回顾做副业的两年

chat 1 - 之前的我在做什么 其实近一年多以来,生活发生了很多变化,其中有一个变化就是,我在不断的尝试寻找副业。可能有些朋友通过我之前的一些博文可以看到,我尝试卖过课(代理)、打过一些广告、也去自己做…

说说Java 8 引入的Stream API

介绍背景 Stream API,这是一种高效、易于使用的数据处理方式,它可以极大提高程序员对集合数据操作的效率和便利性。 1. Stream的基本概念 Java Stream是一种数据流,它可以用于对集合、数组或者其他支持的数据源进行批量操作。它不是数据结…

C语言基础---数组基本语法和案例

数组基本语法与使用方法 什么是数组 ● 数组是 C 语言中的一种数据结构,用于存储一组具有相同数据类型的数据。 ● 数组中的每个元素可以通过一个索引(下标)来访问,索引从 0 开始,最大值为数组长度减 1。 数组 数组…

【Linux开发 第七篇】权限

权限 Linux组权限修改权限 Linux组 在linux中的每个用户必须属于一个组,不能独立于组外 文件/目录 所有者 一般为文件的创建者,谁创建了该文件,就自然的成为了该文件的所有者 这一列即为文件的所有者 修改文件的所有者: chown…

上位机图像处理和嵌入式模块部署(树莓派4b和pcl点云库)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 图像处理,大家都知道它有显著的优点和缺点。优点就是分辨率高,信息丰富。缺点就是,整个图像本身没有深度信息。…

如何把npm切换成yarn管理项目

1.删掉项目中package-lock.json和依赖包 这一步手动删掉就好 2.全局安装yarn npm install -g yarn 3.可以开始执行yarn install安装依赖 1)执行yarn init 这一步是修改npm生成的package.json文件,可能会遇到这个问题: 这个查了一下是有…

Numpy方法总结(三)

一. NumPy 数学函数 1. 三角函数 NumPy 提供了标准的三角函数:sin()、cos()、tan()。 np.sin(a*np.pi/180) np.cos(a*np.pi/180) np.tan(a*np.pi/180) 示例 import numpy as npa np.array([0,30,45,60,90]) print (不同角度的正弦值:) # 通过乘 …

中电金信:夯实云原生时代的系统韧性建设——中电金信混沌工程金融业实践

IT系统建设在经历过单机、集中、分布式的演变历程后,系统运维演练、故障模拟测试的复杂度也不断提高。在复杂的分布式系统中,基础设施、应用平台都可能产生不可预知的故障,在不能确知故障根源的情况下,我们无法阻止故障的发生。更…

论文笔记:Large Language Model for Participatory Urban Planning

202402 arxiv 大模型城市规划 引入了一个基于LLM的多代理协作框架,模拟规划师和数千名具有不同特征和背景的居民,用于参与式城市规划——>生成考虑居民多样化需求的城市区域土地利用规划为了提高讨论的效率,论文采用了鱼缸讨论机制&#…

常见排序算法(插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序,计数排序,基数排序,桶排序)

一.排序的概念 1.排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作 2.稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排…

力扣136. 只出现一次的数字

Problem: 136. 只出现一次的数字 文章目录 题目描述思路复杂度Code 题目描述 思路 由于题目要求使用线性时间复杂度和常量级的空间复杂度,再加上找重复元素这个特性,我们可以想到使用位运算来求解: 1.任何数与其本身异或得0,任何…

kaggle 泰坦尼克号2 得分0.7799

流程 导入所要使用的包引入kaggle的数据集csv文件查看数据集有无空值填充这些空值提取特征分离训练集和测试集调用模型 导入需要的包 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns import warnings warnings.filterwarni…

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

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

给c++小白的教程5:输入

大家好,又见面了。 今天给大家带来c中的输入。 输入,c中有两种,cin>>和scanf()。 在这里只讲解cin,scanf将在以后实体讲解中介绍。 用法: cin>>变量; cin是从键盘上获取数据,赋值给变量 …

设计模式-单例模式

单例模式 饿汉式 饱汉式 单例模式是Java中最简单的设计模式之一,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可…

react中useState的值没有改变,而是旧的数值

问题背景 想实现点击按钮就改变数据的效果,但是在控制台的打印结果,总是上一次的修改情况,并不是最新的修改后的数据 代码: import { useState, useRef } from "react";// 实现sonA的数据传递给sonB const SonA () …

途游游戏,科锐国际(计算机类),得物,蓝禾,奇安信,顺丰,康冠科技,金证科技24春招内推

途游游戏,科锐国际(计算机类),得物,蓝禾,奇安信,顺丰,康冠科技,金证科技24春招内推 ①得物 【岗位】技术,设计,供应链,风控&#xff0…

【docker】把镜像save出来

先把要commit的容器停止。 为了确保提交的镜像反映容器某一精确时刻的稳定状态,应在提交Docker容器为新镜像前先停止该容器。这样生成的新镜像将更可靠、易于管理和重现。 sudo docker commit 容器名 镜像名:tag sudo docker commit sjtu sjtu:4.17 …

微信小程序配置了onShareTimeline分享到朋友圈,但是在开发者工具中这里始终是灰色的,在真机调试的时候也没有发现有分享到朋友圈的相关信息。

微信小程序配置了onShareTimeline分享到朋友圈,但是在开发者工具中这里始终是灰色的,在真机调试的时候也没有发现有分享到朋友圈的相关信息。 有说:使用 web-view组件的页面支持分享发送给朋友不支持分享到朋友圈 折腾半天不如看官方文档。 …

【微服务】Hystrix的概念、作用以及使用方法

目录 概念 作用 使用方法 Hystrix的实现 Hystrix 是 Netflix 提供的一个用于分布式系统的延迟和容错库。它旨在通过在客户端库中实现断路器模式,从而防止在一个分布式环境中的雪崩效应并提供回退选项,从而增强了分布式系统的弹性和可靠性。 概念 断…