在日常办公中,经常需要在 Excel 电子表格和 OpenDocument 电子表格(ODS)之间进行数据交换。ODS 是一种开放标准的电子表格格式,广泛用于 LibreOffice、OpenOffice 等开源办公软件。Spire.XLS for JavaScript 基于 WebAssembly 在浏览器端直接完成 Excel 与 ODS 格式的双向转换,通过虚拟文件系统(VFS)管理输入输出文件,无需后端服务支持。它提供了简单易用的 API,让格式转换更加便捷。
通过 Spire.XLS for JavaScript,您可以将 Excel 工作簿保存为 ODS 格式,从而与开源办公软件无缝协作,也可以将 ODS 文件导入并创建为格式完整的 Excel 工作簿。这使得数据在不同应用程序之间的迁移变得更加便捷高效。
本文介绍两个核心功能点:
有关安装和项目配置,请参考 React 项目中集成 Spire.XLS for JavaScript。以下示例默认已安装 Spire.XLS 并完成 WebAssembly 模块初始化。
将 Excel 工作簿转换为 ODS 文件
将 Excel 数据导出为 ODS 格式,便于在 LibreOffice、OpenOffice 等开源办公软件中直接打开和编辑。通过 Spire.XLS for JavaScript,您可以将整个工作簿保存为 ODS 文件,在保留表格结构、样式和数据的同时,实现跨平台的数据共享。具体操作步骤如下:
- 创建
Workbook对象并加载已有的 Excel 文件。 - 调用工作簿的
SaveToFile()方法,指定输出文件名和FileFormat.ODS文件格式。 - 释放工作簿资源并从 VFS 读取结果文件触发下载。
下面是一个完整的代码示例,展示了在 React 中将 Excel 转换为 ODS:
function App() {
const convertToODS = async () => {
// 获取 Spire.XLS WASM 模块
const xlsModule = window.wasmModule?.spirexls;
// 检查模块是否就绪
if (!xlsModule) {
alert('Spire.Xls is not ready yet');
return;
}
// 加载字体文件以确保文本正确渲染
await window.spire.FetchFileToVFS('ARIAL.TTF', '/Library/Fonts/', `${process.env.PUBLIC_URL}font/`);
// 将示例 Excel 文件加载到 VFS
await window.spire.FetchFileToVFS('Sample.xlsx', '', `${process.env.PUBLIC_URL}data/`);
// 创建工作簿对象并加载 Excel 文件
const workbook = new xlsModule.Workbook();
workbook.LoadFromFile({ fileName: 'Sample.xlsx' });
// 将工作簿保存为 ODS 文件
const outputFileName = 'ExcelToODS.ods';
workbook.SaveToFile({ fileName: outputFileName, fileFormat: xlsModule.FileFormat.ODS });
workbook.Dispose();
// 从 VFS 读取文件并触发下载
const fileArray = window.dotnetRuntime.Module.FS.readFile(outputFileName);
const blob = new Blob([fileArray], { type: 'application/vnd.oasis.opendocument.spreadsheet' });
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 转换为 ODS</h1>
<button onClick={convertToODS}>
生成
</button>
</div>
);
}
export default App;
使用 Spire.XLS for JavaScript 将 Excel 转换为 ODS 文件

将 ODS 文件转换为 Excel 工作簿
将 ODS 文件导入为 Excel 电子表格,可以充分利用 Excel 强大的格式化、计算和图表功能。Spire.XLS for JavaScript 支持通过 LoadFromFile() 方法直接加载 ODS 文件,并自动识别其文件格式,随后即可将工作簿保存为 Excel 格式。具体操作步骤如下:
- 将字体文件和 ODS 示例文件加载到 VFS 虚拟文件系统。
- 创建
Workbook对象,调用LoadFromFile()方法加载 ODS 文件。 - 保存工作簿为 Excel 文件并触发下载。
下面是一个完整的代码示例,展示了在 React 中将 ODS 转换为 Excel:
function App() {
const convertToExcel = async () => {
// 获取 Spire.XLS WASM 模块
const xlsModule = window.wasmModule?.spirexls;
// 检查模块是否就绪
if (!xlsModule) {
alert('Spire.Xls is not ready yet');
return;
}
// 加载字体文件以确保文本正确渲染
await window.spire.FetchFileToVFS('ARIAL.TTF', '/Library/Fonts/', `${process.env.PUBLIC_URL}font/`);
// 将 ODS 示例文件加载到 VFS
await window.spire.FetchFileToVFS('Sample.ods', '', `${process.env.PUBLIC_URL}data/`);
// 创建工作簿对象并加载 ODS 文件
const workbook = new xlsModule.Workbook();
workbook.LoadFromFile({ fileName: 'Sample.ods' });
// 保存工作簿并释放资源
const outputFileName = 'ODSToExcel.xlsx';
workbook.SaveToFile({ fileName: outputFileName, version: xlsModule.ExcelVersion.Version2010 });
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>将 ODS 转换为 Excel</h1>
<button onClick={convertToExcel}>
生成
</button>
</div>
);
}
export default App;
使用 Spire.XLS for JavaScript 将 ODS 转换为 Excel 文件

常见问题
为什么生成的 ODS 文件无法正常打开?
原因:使用 SaveToFile() 方法保存工作簿时,若未通过 fileFormat 参数指定正确的输出文件格式,生成的文件格式可能与扩展名不匹配,导致无法正常打开。
解决方案:保存为 ODS 时指定具体的文件格式枚举值 xlsModule.FileFormat.ODS:
const outputFileName = 'ExcelToODS.ods';
workbook.SaveToFile({ fileName: outputFileName, fileFormat: xlsModule.FileFormat.ODS });
下载的 ODS 文件被当作其他类型打开或无法识别?
原因:创建 Blob 时 MIME 类型设置不当,导致浏览器无法识别下载文件为 ODS 文档,可能以其他类型打开或显示乱码。
解决方案:下载时指定正确的 MIME 类型,并确保下载文件名以 .ods 结尾:
const blob = new Blob([fileArray], { type: 'application/vnd.oasis.opendocument.spreadsheet' });
const a = document.createElement('a');
a.href = URL.createObjectURL(blob);
a.download = 'ExcelToODS.ods';
a.click();
获取免费许可证
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。









