本文介绍用节点。js中的js-xlsx库来处理Excel文件。
js-xlsx库是目前Github上星数量最多的处理Excel的库,功能强大,但上手难度稍大。文档有些乱,不适合快速上手。
本文对js-xlsx库进行一定的总结,并提供几个实用的例子供读者测试,学习,交流。
美元npm安装xlsx
在使用这个库之前,先介绍库中的一些概念。
-
<李>工作簿对象,指的是整份Excel文档。我们在使用js-xlsx读取Excel文档之后就会获得工作簿对象。李>
<李>工作表对象,指的是Excel文档中的表。我们知道一份Excel文档中可以包含很多张表,而每张表对应的就是工作表对象。李>
<李>细胞对象,指的就是工作表中的单元格,一个单元格就是一个细胞对象。
李>
它们的关系如下:
//工作簿 { SheetNames:‘sheet1’,‘sheet2’, 表:{//工作表 “sheet1”: {//单元格 “A1”: {…},//单元格 A2: {…}, … },//工作表 “sheet2”: {//单元格 “A1”: {…},//单元格 A2: {…}, … } } }
<>强基本用法强>
-
<李>用<代码> XLSX。readFile> 代码打开Excel文件,返回工作簿李>
<李>用<代码>工作簿。SheetNames 代码>获取表名李>
<李>用<代码>工作簿。表[xxx] 代码>通过表名获取表格李>
<李>按自己的需求去处理表格李>
<李>生成新Excel的文件
李>
<强>具体用法强>
读取Excel文件
从“进口XLSX XLSX '; const工作簿=XLSX.readFile (someExcel。xlsx’,选择);
获取Excel文件中的表
//获取Excel中所有表名 const sheetNames=workbook.SheetNames;//返回[' sheet1 ', ' sheet2 ']//根据表名获取对应某张表 const工作表=workbook.Sheets [sheetNames [0]],
通过<代码>工作表(地址)代码>来操作表格,以!开头的关键是特殊的字段。
//获取A1单元格对象 让a1=工作表(“a1”);//返回{v:‘你好’,老师:“年代”,…}//获取A1中的值 a1。v//返回‘你好’//获取表的有效范围 工作表[' !ref ']//返回的A1: B20” 工作表[' !范围']//返回范围对象,{s: {0, c: 0}, e: {r: 100 c: 2}}//获取合并过的单元格 工作表[' !合并']//返回一个包含范围对象的列表,[{s: {0, c: 0}, c: {2, c: 1}}]
解析Excel生成JSON
提示事实上,你可以直接通过<代码> XLSX.utils.sheet_to_json(工作表)代码>获得同样的结果
const header={}; 常量数据=https://www.yisu.com/zixun/[]; const键=种(工作表); 键//过滤以!开头的关键 .filter (k=> k [0] !==!)//遍历所有单元格 .forEach (k=比;{//如A11中的一个 让坳=k。substring (0,1);//如A11中的11 让行=方法(k.substring (1));//当前单元格的值 让价值=https://www.yisu.com/zixun/worksheet [k] .v;//保存字段名 如果(行===1){ 标题(col)=价值; 返回; }//解析成JSON 如果数据(行)(!){ 数据(行)={}; } 数据(行)[头[坳]]=价值; }); console.log(数据);//[{'姓名:test1,“年龄”:20},{”姓名”:“test2”、“年龄”:10}…)
<强>合并表格强>
步骤:
-
<李>读取多份表格李>
<李>合并数组
李>
提示:其实合并表格跟XLSX没什么关系,只是处理几个数组而已。
sheet1
id 的名字 年龄 1 test1 30. 2 test2 20. 3. test3 18
sheet2
id 国家 备注 1 中国 你好 2 美国 世界 3. Unkonw & # 63;& # 63;& # 63;