在日常办公中,经常需要在 Excel 电子表格和纯文本文件(TXT)之间进行数据交换。Spire.XLS for JavaScript 基于 WebAssembly 在浏览器端直接完成 Excel 与 TXT 格式的双向转换,通过虚拟文件系统(VFS)管理输入输出文件,无需后端服务支持。它提供了灵活的 API 用于控制分隔符、编码格式等转换参数。
通过 Spire.XLS for JavaScript,您可以将 Excel 工作表中的数据导出为结构化的文本文件,也可以将带有分隔符的文本文件导入并创建为格式完整的 Excel 工作簿。这使得数据在不同应用程序之间的迁移变得更加便捷高效。
本文介绍两个核心功能点:
有关安装和项目配置,请参考 React 项目中集成 Spire.XLS for JavaScript。以下示例默认已安装 Spire.XLS 并完成 WebAssembly 模块初始化。
将 Excel 工作表中的数据转换为 TXT 文件
将 Excel 数据导出为纯文本文件便于在其他应用程序中进一步处理或分析。通过 Spire.XLS for JavaScript,您可以将指定工作表中的内容保存为 TXT 文件,并自由选择字段分隔符和字符编码。具体操作步骤如下:
- 创建
Workbook对象并加载已有的 Excel 文件。 - 通过
workbook.Worksheets.get(index)获取指定工作表。 - 调用工作表的
SaveToFile()方法,指定输出文件名、分隔符和编码格式。 - 释放工作簿资源并从 VFS 读取结果文件触发下载。
下面是一个完整的代码示例,展示了在 React 中将 Excel 转换为 TXT:
function App() {
const convertToText = async () => {
// 获取 Spire.XLS WASM 模块
const xlsModule = window.wasmModule?.spirexls;
// 检查模块是否就绪
if (!xlsModule) {
alert('Spire.Xls is not ready yet');
return;
}
// 将示例文件加载到 VFS
await window.spire.FetchFileToVFS('Sample.xlsx', '', `${process.env.PUBLIC_URL}data/`);
// 创建工作簿对象并加载 Excel 文件
const workbook = new xlsModule.Workbook();
workbook.LoadFromFile({ fileName: 'Sample.xlsx' });
// 获取第一个工作表
let sheet = workbook.Worksheets.get(0);
// 将工作表保存为 TXT 文件,使用空格作为分隔符,UTF-8 编码
const outputFileName = 'ExcelToTxt.txt';
sheet.SaveToFile({
fileName: outputFileName,
separator: " ",
encoding: xlsModule.Encoding.get_UTF8()
});
workbook.Dispose();
// 从 VFS 读取文件并触发下载
const fileArray = window.dotnetRuntime.Module.FS.readFile(outputFileName);
const blob = new Blob([fileArray], { type: 'text/plain' });
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 转换为 TXT</h1>
<button onClick={convertToText}>
生成
</button>
</div>
);
}
export default App;
使用 Spire.XLS for JavaScript 将 Excel 转换为 TXT 文件

将 TXT 文件转换为 Excel 工作簿
将带有分隔符的文本文件导入为 Excel 电子表格,可以充分利用 Excel 的格式化、计算和图表功能。Spire.XLS for JavaScript 支持通过读取文本文件内容并逐单元格写入工作簿来实现 TXT 到 Excel 的转换。转换过程中还可以设置标题行加粗等格式。具体操作步骤如下:
- 将字体文件和 TXT 示例文件加载到 VFS 虚拟文件系统。
- 从 VFS 中读取 TXT 文件的内容,按行分割并解析每一行的单元格数据。
- 创建
Workbook对象,遍历数据列表并将数据逐行逐列写入工作表的单元格。 - 为标题行设置加粗样式,调用
AllocatedRange.AutoFitColumns()自动调整列宽。 - 保存工作簿为 Excel 文件并触发下载。
下面是一个完整的代码示例,展示了在 React 中将 TXT 转换为 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', '', `${process.env.PUBLIC_URL}font/`);
// 将 TXT 文件加载到 VFS
await window.spire.FetchFileToVFS('Sample.txt', '', `${process.env.PUBLIC_URL}data/`);
// 从 VFS 读取文本文件内容
const txtData = window.dotnetRuntime.Module.FS.readFile('Sample.txt');
const text = typeof txtData === 'string' ? txtData : new TextDecoder('utf-8').decode(txtData);
// 按行分割,兼容 \r\n 和 \n
const lines = text.trim().split(/\r?\n/);
// 解析每一行数据(尝试制表符分隔,若无效则尝试其他分隔符)
const data = [];
for (const line of lines) {
const trimmed = line.trim();
if (!trimmed) continue;
let cells = trimmed.split('\t');
if (cells.length === 1) {
cells = trimmed.split(/\s+/);
}
data.push(cells);
}
// 创建 Workbook 对象
const workbook = new xlsModule.Workbook();
// 获取第一张工作表
const sheet = workbook.Worksheets.get(0);
// 遍历数据列表中的行和列,写入单元格
for (let row = 0; row < data.length; row++) {
for (let col = 0; col < data[row].length; col++) {
const cell = sheet.get_Item(row + 1, col + 1);
cell.Value = data[row][col];
// 标题行加粗
if (row === 0) {
cell.Style.Font.IsBold = true;
}
}
}
// 设置自适应列宽
sheet.AllocatedRange.AutoFitColumns();
// 保存工作簿并释放资源
const outputFileName = 'TxtToExcel.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>将 TXT 转换为 Excel</h1>
<button onClick={convertToExcel}>
生成
</button>
</div>
);
}
export default App;
使用 Spire.XLS for JavaScript 将 TXT 转换为 Excel 文件

常见问题
如何处理转换过程中的编码问题?
原因:本示例中的 TXT 文件使用了 UTF-8 编码。如果 TXT 文件采用了其他编码格式(如 GBK、GB2312 等),直接使用 TextDecoder('utf-8') 解码会导致乱码。
解决方案:根据 TXT 文件的实际编码,在 TextDecoder 的构造参数中指定对应的编码类型:
// UTF-8 编码
const text = new TextDecoder('utf-8').decode(txtData);
// GBK 编码
const text = new TextDecoder('gbk').decode(txtData);
// GB2312 编码
const text = new TextDecoder('gb2312').decode(txtData);
// UTF-16 编码
const text = new TextDecoder('utf-16').decode(txtData);
如何处理不同分隔符的 TXT 文件?
原因:TXT 文件可能使用不同的分隔符,如制表符(\t)、空格、逗号(,)、分号(;)等。如果分隔符选择不当,会导致数据解析错误。
解决方案:在 JavaScript 中,可通过修改 split() 方法的参数来指定不同的分隔符:
// 制表符分隔
let cells = trimmed.split('\t');
// 逗号分隔
let cells = trimmed.split(',');
// 分号分隔
let cells = trimmed.split(';');
// 正则表达式:按一个或多个空白字符(空格、制表符等)分隔
let cells = trimmed.split(/\s+/);
获取免费许可证
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。









