条件格式是 Excel 中直观展示数据的重要手段,它根据单元格的数值或日期自动应用颜色、条形等可视化效果,让报表中的高低值、关键日期一目了然。Spire.XLS for JavaScript 基于 WebAssembly 在浏览器端直接为单元格区域添加条件格式,通过虚拟文件系统(VFS)管理输入输出文件,无需后端服务支持。
本文介绍三个核心功能点:
有关安装和项目配置,请参考 React 项目中集成 Spire.XLS for JavaScript。以下示例默认已安装 Spire.XLS 并完成 WebAssembly 模块初始化。
在单元格区域应用数据条
数据条通过单元格中填充的横向条状长度直观反映数值的相对大小,数值越大,条形越长。Spire.XLS for JavaScript 通过 ConditionalFormats.Add 方法创建条件格式集合,再通过 AddCondition 添加数据条条件,并使用 DataBar.BarColor 自定义条形颜色。
function App() {
const sheetToSVG = async () => {
// 获取 Spire.XLS WASM 模块
const xlsModule = window.wasmModule?.spirexls;
// 检查模块是否就绪
if (!xlsModule) {
alert('Spire.Xls is not ready yet');
return;
}
// 将字体文件载入 VFS
await window.spire.FetchFileToVFS('simsun.ttc', '/Library/Fonts/', `${process.env.PUBLIC_URL}/font/`);
// 创建工作簿
const workbook = new xlsModule.Workbook();
// 获取第一个工作表
const sheet = workbook.Worksheets.get(0);
// 向 A1:C4 单元格区域写入数据
sheet.Range.get("A1").NumberValue = 582;
sheet.Range.get("A2").NumberValue = 234;
sheet.Range.get("A3").NumberValue = 314;
sheet.Range.get("A4").NumberValue = 50;
sheet.Range.get("B1").NumberValue = 150;
sheet.Range.get("B2").NumberValue = 894;
sheet.Range.get("B3").NumberValue = 560;
sheet.Range.get("B4").NumberValue = 900;
sheet.Range.get("C1").NumberValue = 134;
sheet.Range.get("C2").NumberValue = 700;
sheet.Range.get("C3").NumberValue = 920;
sheet.Range.get("C4").NumberValue = 450;
sheet.AllocatedRange.RowHeight = 15;
sheet.AllocatedRange.ColumnWidth = 17;
// 添加条件格式并应用到数据区域
const xcfs = sheet.ConditionalFormats.Add();
xcfs.AddRange(sheet.AllocatedRange);
// 添加数据条条件格式并设置条形颜色
const format = xcfs.AddCondition();
format.FormatType = xlsModule.ConditionalFormatType.DataBar;
format.DataBar.BarColor = xlsModule.Color.get_CadetBlue();
const outputFileName = 'ApplyDataBarsToCellRange_out.xlsx';
workbook.SaveToFile({ fileName: outputFileName, version: xlsModule.ExcelVersion.Version2010 });
// 释放 workbook 对象以释放资源
workbook.Dispose();
// 从 VFS 读取转换后的文件,触发下载
const fileArray = window.dotnetRuntime.Module.FS.readFile(outputFileName);
const blob = new Blob([fileArray], { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = outputFileName;
a.click();
URL.revokeObjectURL(url);
};
return (
<div style={{ textAlign: 'center', height: '300px' }}>
<h1>Apply Data Bars to Cell Range</h1>
<button onClick={sheetToSVG}>
Start
</button>
</div>
);
}
export default App;
在单元格区域应用数据条效果

根据日期设置条件格式
在项目管理、销售报表等场景中,我们常常需要高亮显示最近一段时间内的日期,例如最近 7 天内的记录。Spire.XLS for JavaScript 通过 AddTimePeriodCondition 方法添加基于时间段的日期条件格式,并以 TimePeriodType 枚举指定时间范围。
function App() {
const sheetToSVG = async () => {
// 获取 Spire.XLS WASM 模块
const xlsModule = window.wasmModule?.spirexls;
// 检查模块是否就绪
if (!xlsModule) {
alert('Spire.Xls is not ready yet');
return;
}
// 将字体和 Excel 文件载入 VFS
await window.spire.FetchFileToVFS('simsun.ttc', '/Library/Fonts/', `${process.env.PUBLIC_URL}/font/`);
const inputFileName = 'ConditionallyFormatDate.xlsx';
await window.spire.FetchFileToVFS(inputFileName, '', `${process.env.PUBLIC_URL}data/`);
// 加载工作簿
const workbook = new xlsModule.Workbook();
workbook.LoadFromFile({ fileName: inputFileName });
// 获取第一个工作表
const sheet = workbook.Worksheets.get(0);
// 添加条件格式并应用到数据区域
const xcfs = sheet.ConditionalFormats.Add();
xcfs.AddRange(sheet.AllocatedRange);
// 高亮最近 7 天内日期的单元格
const conditionalFormat = xcfs.AddTimePeriodCondition(xlsModule.TimePeriodType.Last7Days);
conditionalFormat.BackColor = xlsModule.Color.get_Orange();
const outputFileName = 'ConditionallyFormatDate_out.xlsx';
workbook.SaveToFile({ fileName: outputFileName, version: xlsModule.ExcelVersion.Version2010 });
// 释放 workbook 对象以释放资源
workbook.Dispose();
// 从 VFS 读取转换后的文件,触发下载
const fileArray = window.dotnetRuntime.Module.FS.readFile(outputFileName);
const blob = new Blob([fileArray], { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = outputFileName;
a.click();
URL.revokeObjectURL(url);
};
return (
<div style={{ textAlign: 'center', height: '300px' }}>
<h1>Conditionally Format Date</h1>
<button onClick={sheetToSVG}>
Start
</button>
</div>
);
}
export default App;
设置日期条件格式前
设置日期条件格式后

通过公式创建条件格式
当内置条件格式无法满足需求时,可以使用公式自定义判断规则。Spire.XLS for JavaScript 支持将 ConditionalFormatType 设置为 Formula,并通过 FirstFormula 指定判断公式,满足条件的单元格将应用所设置的背景色。
function App() {
const sheetToSVG = async () => {
// 获取 Spire.XLS WASM 模块
const xlsModule = window.wasmModule?.spirexls;
// 检查模块是否就绪
if (!xlsModule) {
alert('Spire.Xls is not ready yet');
return;
}
// 将字体和 Excel 文件载入 VFS
await window.spire.FetchFileToVFS('simsun.ttc', '/Library/Fonts/', `${process.env.PUBLIC_URL}/font/`);
const inputFileName = 'ConditionallyFormatDate.xlsx';
await window.spire.FetchFileToVFS(inputFileName, '', `${process.env.PUBLIC_URL}data/`);
// 加载工作簿
const workbook = new xlsModule.Workbook();
workbook.LoadFromFile({ fileName: inputFileName });
// 获取第一个工作表及其第一列
const sheet = workbook.Worksheets.get(0);
const range = sheet.Columns.get(0);
// 添加条件格式并应用到第一列
const xcfs = sheet.ConditionalFormats.Add();
xcfs.AddRange(range);
// 设置条件格式公式:A 列单元格值小于同行 B 列值时应用格式
const conditional = xcfs.AddCondition();
conditional.FormatType = xlsModule.ConditionalFormatType.Formula;
conditional.FirstFormula = "=($A1<$B1)";
conditional.BackKnownColor = xlsModule.ExcelColors.Yellow;
const outputFileName = 'CreateFormulaConditionalFormat_out.xlsx';
workbook.SaveToFile({ fileName: outputFileName, version: xlsModule.ExcelVersion.Version2010 });
// 释放 workbook 对象以释放资源
workbook.Dispose();
// 从 VFS 读取转换后的文件,触发下载
const fileArray = window.dotnetRuntime.Module.FS.readFile(outputFileName);
const blob = new Blob([fileArray], { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = outputFileName;
a.click();
URL.revokeObjectURL(url);
};
return (
<div style={{ textAlign: 'center', height: '300px' }}>
<h1>Create Formula Conditional Format</h1>
<button onClick={sheetToSVG}>
Start
</button>
</div>
);
}
export default App;
通过公式设置条件格式

常见问题
保存的文件在旧版 Excel 中无法显示条件格式
原因:数据条、时间段、公式等条件格式属于 Excel 2007+(XLSX)格式能力,若以旧版本格式保存可能导致条件格式丢失或无法显示。
解决:保存时显式指定文件版本为 Excel 2010,例如:
workbook.SaveToFile({
fileName: 'output.xlsx',
version: xlsModule.ExcelVersion.Version2010
});
日期条件格式没有生效
原因:目标单元格中的日期数据实际为文本或普通数字,并非真正的日期值,导致基于时间段的判断无法匹配。
解决:确保工作表中的日期以日期格式存储,例如在生成测试数据时直接写入日期类型值,而非字符串。
公式条件格式引用范围有误
原因:FirstFormula 中公式的相对引用与单元格区域不对应,导致判断结果与预期不符。
解决:确认公式中的行列引用与所选区域一致,例如对整列 A 应用 =($A1<$B1) 时,公式以所选区域首个单元格作为参考起点。
获取免费许可证
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。







