简介
SheetJS是前端操作Excel以及类似的二维表的最佳选择之一,而js-xlsx
是它的社区版本.
js-xlsx
将注意力集中到了数据转换和导出上,所以它支持相当多种类的数据解析和导出.不仅仅局限于支持xlsx格式.
它可以:
- 解析符合格式的数据
- 导出符合格式的数据
- 利用中间层操作数据
可以运行在:
- 浏览器端
- Node端
浏览器端特色
- 纯浏览器端解析数据
- 纯浏览器端导出数据
Node端特色
- 读写文件
- 流式读写
本篇文章力求精简,主要讨论一下js-xlsx
的工作流程和基本概念以及使用方式.
概念
js-xlsx
提供了一个中间层用于操作数据,他将不同类型的文件抽象成同一个js对象,从而规避了操作不同种类数据数据之间的复杂性.
并且围绕着这个对象提供了一系列的抽象功能,本小节主要讨论这些数据对象与Excel数据之间的关系.
而浏览器端和Node端的区别仅仅在于怎样导入文件和导出文件上而已,对于数据的操作,双方的接口是一致的.
引入
js-xlsx
的引入非常简单,浏览器端引入可以是最基本script
标签的形式.
<script lang="javascript" src="dist/xlsx.full.min.js"></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 =