使用TypeScript自动化Excel条件格式:双单元格规则整行着色
在TypeScript中实现Excel多单元格条件的整行高亮格式
我们可以使用exceljs库来实现Excel的条件格式自动化,这是一个适用于TypeScript/JavaScript的常用Excel处理工具。
步骤1:安装依赖
首先安装exceljs:
npm install exceljs
步骤2:实现核心代码
以下是完整的示例代码,实现你需要的「B列单元格包含"Y(UP)KZR"且G列单元格包含"DN to UP"时高亮整行」的规则,你可以直接复制修改来实现另外三条规则:
import ExcelJS from 'exceljs'; async function applyRowConditionalFormatting(sourceFilePath: string, outputFilePath: string) { // 读取源Excel文件 const workbook = new ExcelJS.Workbook(); await workbook.xlsx.readFile(sourceFilePath); // 选择目标工作表(这里取第一个工作表,可按名称修改:workbook.getWorksheet('Sheet1')) const worksheet = workbook.worksheets[0]; if (!worksheet) { console.error('未找到目标工作表'); return; } // 规则1:B列含"Y(UP)KZR"且G列含"DN to UP",整行高亮 worksheet.addConditionalFormatting({ ref: 'A:XFD', // 应用到所有列,确保整行被覆盖 rules: [ { type: 'expression', formula: [ 'AND(ISNUMBER(SEARCH("Y(UP)KZR", B1)), ISNUMBER(SEARCH("DN to UP", G1)))' ], style: { fill: { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FFFFCC00' } // 黄色填充,替换为你需要的ARGB颜色值 } } } ] }); // ------------------- 复制以下代码添加其他规则 ------------------- /* // 规则2:示例规则,可修改条件和颜色 worksheet.addConditionalFormatting({ ref: 'A:XFD', rules: [ { type: 'expression', formula: [ 'AND(ISNUMBER(SEARCH("目标文本1", D1)), ISNUMBER(SEARCH("目标文本2", F1)))' ], style: { fill: { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FF00FF00' } // 绿色填充 } } } ] }); // 规则3:继续添加 worksheet.addConditionalFormatting({ ref: 'A:XFD', rules: [ { type: 'expression', formula: [ // 自定义你的条件公式 ], style: { fill: { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FF00B0F0' } // 蓝色填充 } } } ] }); */ // 写入格式化后的文件 await workbook.xlsx.writeFile(outputFilePath); console.log('条件格式应用完成,已保存到目标文件'); } // 调用函数,替换为你的源文件和输出文件路径 applyRowConditionalFormatting('你的源文件.xlsx', '格式化后的文件.xlsx');
关键说明
- 匹配逻辑:使用
SEARCH做模糊匹配(不区分大小写),如果需要精确匹配或区分大小写,可替换为FIND;AND用于同时满足两个单元格的条件 - 应用范围:
ref: 'A:XFD'覆盖了Excel的所有列,确保整行都能被高亮;如果只需要特定行范围,可改为'1:100'这样的行区间 - 颜色设置:
fgColor.argb使用ARGB颜色码,你可以在Excel中取色后获取对应代码(比如黄色是FFFFCC00) - 多规则扩展:直接复制
addConditionalFormatting代码块,修改公式中的单元格引用、匹配文本以及填充颜色,即可快速添加其他三条规则
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

