简介
SheetJS是前端操作Excel以及类似的二维表的最佳选择之一,而js-xlsx是它的社区版本.
js-xlsx将注意力集中到了数据转换和导出上,所以它支持相当多种类的数据解析和导出.不仅仅局限于支持xlsx格式.
它可以:
解析符合格式的数据
导出符合格式的数据
利用中间层操作数据
可以运行在:
浏览器端
Node端
浏览器端特色
纯浏览器端解析数据
纯浏览器端导出数据
Node端特色
读写文件
流式读写
本篇文章力求精简,主要讨论一下js-xlsx的工作流程和基本概念以及使用方式.
概念
js-xlsx提供了一个中间层用于操作数据,他将不同类型的文件抽象成同一个js对象,从而规避了操作不同种类数据数据之间的复杂性.
并且围绕着这个对象提供了一系列的抽象功能,本小节主要讨论这些数据对象与Excel数据之间的关系.
而浏览器端和Node端的区别仅仅在于怎样导入文件和导出文件上而已,对于数据的操作,双方的接口是一致的.
引入
js-xlsx的引入非常简单,浏览器端引入可以是最基本script标签的形式.
在node端,使用npm安装如下模块:
npm install xlsx --save
在Node中如下引入:
const xlsx = require('xlsx');
对应关系
在这个表格中我列举了Excel与js-xlsx之间的关系:
Excel名词js-xlsx中的抽象类型
工作簿
workBook
工作表
Sheets
Excel引用样式(单元格地址)
cellAddress
单元格
cell
有了这个基本的对应关系我们就可以轻松的理解后续的操作,例如在我们使用Excel的过程中,获取一个数据的流程如下:
打开工作簿
打开一个工作表
选中一片区域或者一个单元格
针对数据进行操作
保存(另存为)
那么在js-xlsx中获取一个单元格内容的操作如下:
// 先不要关心我们的workbook对象是从哪里来的
var first_sheet_name = workbook.SheetNames[0]; // 获取工作簿中的工作表名字
var address_of_cell = 'A1'; // 提供一个引用样式(单元格下标)
var worksheet = workbook.Sheets[first_sheet_name]; // 获取对应的工作表对象
var desired_cell = worksheet[address_of_cell]; // 获取对应的单元格对