在 Node.js 中使用 js-xlsx 处理 Excel 文件

SheetJS js-xlsx 是目前关注度最高的处理 Excel 的 JavaScript 库。支持 XLS/XLSX/CSV/ODS 等多种表格格式,功能强大,但文档看起来有点累。本文主要是介绍下 js-xlsx 的基本概念和操作。

基本概念

workbook
工作簿
worksheet
工作表
cell
单元格
A1 标记
引用单元格时所使用的地址格式(如:A1、C7)

基本用法

读取文件

 

workbook 对象结构如下:

 

获取工作表

根据表名获取对应的工作表

worksheet 对象结构如下:

 

其中 worksheet['!ref'] 是工作表的有效范围(基于 A-1)。

获取单元格

通过 worksheet[address_of_cell] 获取单元格,也就是通过 A1 标记的键名来获取单元格:

 

或者通过地址对象 { r: R, c: C } 来获取单元格,RC 分别代表从 0 开始的行和列的索引。

 

cell 对象结构如下:

 

编辑单元格

 

需要注意的是,内建的导出工具会优先尝试使用 w 的值,所以如果之后要使用导出功能,在修改值时应该同时删除 w 按键或设置为 undefined

删除行/删除列

js-xlsx 并没有提供删除行/删除列的功能,所以需要我们自行实现:

 

XLSX.utils 中的 encode_range / decode_range 方法用来转换单元格范围(A2:C7 相当于{s:{c:0, r:1}, e:{c:2, r:6}})。

保存/导出

通过 XLSX.writeFile(wb, filename) 就可以生成新的表格文件:

 

XLSX.utils.sheet_to_* 则提供了多种导出格式(csv/txt/html/json/formulae),以下是导出 JSON 文件的代码:

 

最后,附上 js-xlsx 的 GitHub 仓库地址 SheetJS/js-xlsxSheetJS 官网