工作簿里的工作表一多,默认名称和相似的标签就难以分辨。把「Sheet1」改成「季度销售数据」,他人打开文件即可知道这张表的内容;给销售、库存、汇总三张表分别加上红、绿、浅蓝标签,切换时不必逐张点开确认。名称与标签颜色都保存在工作簿自身,不依赖外部说明,分发和归档时也不会丢失。Spire.XLS for JavaScript 基于 WebAssembly 在浏览器端直接完成上述操作,通过虚拟文件系统(VFS)管理输入输出文件,无需后端服务支持。
本文介绍两个核心功能点:
有关安装和项目配置,请参考 React 项目中集成 Spire.XLS for JavaScript。以下示例默认已安装 Spire.XLS 并完成 WebAssembly 模块初始化。
修改 Excel 工作表名称
工作表名称是读者打开文件后最先看到的标识。沿用「Sheet1」「Sheet2」这类默认名称,表格内容再多,也要逐张点开才能找到目标;把名称改成「季度销售数据」这样的业务名称,标签栏本身就成了一份目录,打印或导出时也能保留这层信息。示例工作簿的三张表依次是销售、库存与汇总数据,本节先把第一张表的名称改掉。
修改工作表名称的写法与结果:
| 写法 | 得到的结果 |
|---|---|
workbook.Worksheets.get(0) |
按索引取得工作簿中的第一张工作表 |
sheet.Name |
读回当前的工作表名称 |
sheet.Name = '季度销售数据' |
把工作表名称改为新名称 |
workbook.SaveToFile |
把改名后的工作簿保存到 VFS |
具体操作步骤如下:
- 用
window.spire.FetchFileToVFS把字体文件与测试数据文件载入 VFS。 - 用
new Workbook()新建工作簿,用workbook.LoadFromFile载入输入文件。 - 用
workbook.Worksheets.get(0)按索引取得第一张工作表。 - 把
sheet.Name赋值为新的工作表名称。 - 用
workbook.SaveToFile保存工作簿,再用workbook.Dispose释放 workbook 对象以释放资源。
以下为完整的代码示例,演示如何在 React 中修改 Excel 工作表名称:
function App() {
const renameWorksheet = 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 inputFileName = 'WorksheetNames.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);
// 把工作表名称改为新的名称
sheet.Name = '季度销售数据';
// 保存工作簿
const outputFileName = 'RenameWorksheet.xlsx';
workbook.SaveToFile({ fileName: outputFileName });
// 释放 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>修改 Excel 工作表名称</h1>
<button id="rename-worksheet" onClick={renameWorksheet}>修改工作表名称</button>
</div>
);
}
export default App;
修改第一张工作表名称后的工作簿:

设置 Excel 工作表标签颜色
工作表名称写全之后,标签栏仍然是一排长度相近的文字,切换时免不了逐个扫视。标签颜色提供了第二层标识:销售用红色、库存用绿色、汇总用浅蓝色,颜色先于文字被看到,读者可以按颜色直接定位分组;颜色与名称都写进工作簿,发给他人后依然保留。示例工作簿的三张表正好对应三个分组,本节依次为它们设置不同的标签颜色。
设置工作表标签颜色的写法与结果:
| 写法 | 得到的结果 |
|---|---|
workbook.Worksheets.get(0) |
按索引取得要设置颜色的工作表 |
sheet.TabColor = xlsModule.Color.get_Red() |
工作表标签变为红色 |
sheet.TabColor = xlsModule.Color.get_Green() |
工作表标签变为绿色 |
sheet.TabColor = xlsModule.Color.get_LightBlue() |
工作表标签变为浅蓝色 |
xlsModule.Color.FromArgb(255, 255, 193, 7) |
构造自定义 RGB 颜色,供 TabColor 使用 |
具体操作步骤如下:
- 用
window.spire.FetchFileToVFS载入字体文件与测试数据文件。 - 用
new Workbook()新建工作簿,再用workbook.LoadFromFile载入输入文件。 - 用
workbook.Worksheets.get(0)、get(1)、get(2)依次取得三张工作表。 - 分别把每张工作表的
TabColor赋值为xlsModule.Color.get_Red()、get_Green()与get_LightBlue()。 - 用
workbook.SaveToFile保存工作簿,再用workbook.Dispose释放 workbook 对象以释放资源。
以下为完整的代码示例,演示如何在 React 中设置工作表标签颜色:
function App() {
const setTabColor = 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 inputFileName = 'WorksheetNames.xlsx';
await window.spire.FetchFileToVFS(inputFileName, '', `${process.env.PUBLIC_URL}data/`);
// 加载工作簿
const workbook = new xlsModule.Workbook();
workbook.LoadFromFile({ fileName: inputFileName });
// 依次为三张工作表设置红色、绿色和浅蓝色标签
workbook.Worksheets.get(0).TabColor = xlsModule.Color.get_Red();
workbook.Worksheets.get(1).TabColor = xlsModule.Color.get_Green();
workbook.Worksheets.get(2).TabColor = xlsModule.Color.get_LightBlue();
// 保存工作簿
const outputFileName = 'SetTabColor.xlsx';
workbook.SaveToFile({ fileName: outputFileName });
// 释放 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>设置 Excel 工作表标签颜色</h1>
<button id="set-tab-color" onClick={setTabColor}>设置标签颜色</button>
</div>
);
}
export default App;
为三张工作表设置标签颜色后的工作簿:

为工作表标签设置自定义颜色
内置颜色不能满足报表的配色方案时,可以用 Color.FromArgb 构造自定义颜色。它的四个参数依次是 Alpha、红色、绿色与蓝色通道,取值均为 0 到 255:
// 将第一张工作表的标签设置为琥珀色
workbook.Worksheets.get(0).TabColor = xlsModule.Color.FromArgb(255, 255, 193, 7);
常见问题
修改工作表名称时提示名称重复
原因:同一工作簿中的工作表名称必须唯一,且比较时不区分大小写。把某个工作表改成另一个工作表已占用的名称(例如「Sales」与「sales」)会触发该限制。
解决:改名之前先遍历 workbook.Worksheets 读取每张表的 Name,确认目标名称未被占用,再赋给 sheet.Name。
工作表名称包含斜杠等字符时报错
原因:Excel 不允许工作表名称包含 :、\、/、?、*、[、] 这些字符,赋值时 Spire.XLS 会直接抛出错误。
解决:把名称中的非法字符替换为短横线或下划线,再赋值给 sheet.Name。
工作表名称超过 31 个字符会怎样
原因:Excel 对工作表名称的长度上限是 31 个字符。超出时 Spire.XLS 不会报错,而是把名称截断到 31 个字符再写入。
解决:赋值前检查 name.length,超过 31 个字符时先缩写。截断发生在赋值阶段,保存后再比较名称就会与预期不一致。
按名称获取工作表时抛出 Arg_NullReferenceException
原因:workbook.Worksheets.get('名称') 只在名称完全匹配时返回工作表。名称不存在、末尾多了空格,或者工作表已被改名,都会抛出该异常。
解决:先遍历 workbook.Worksheets 输出各表的 Name,确认当前名称后再调用 get;名称来自外部输入时,先去除首尾空格。
获取免费许可证
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。









