大家好,今天来聊一聊如何使用 JS
来解析 excel
文件,当然不是直接使用 exceljs
、sheetjs
之类的库,那就没意思了,而是主要说一下 JS
解析 excel
表格是如何实现的。
注意本文主要讨论 xlsx
格式的 excel
表格,其它格式未探究并不清楚。
excel 表格文件到底是什么
首先要解析 excel
文件,得先了解他是如何存储数据的,经过我百般搜索,终于在 GG
中找到了答案:excel
文件其实是一个 zip
包!于是我赶紧新建了一个 xlsx
文件,在其中新建了两个 sheet
表,两个 sheet
表数据如下:
此为 sheet
1:
A | B | C |
---|---|---|
1 | 2 | |
1 | 2 | |
1 | 2 | |
1 | 2 |
此为 sheet
2:
A | B |
---|---|
q | a |
q | a |
q | a |
然后使用 zip
进行解压:
unzip test.xlsx -d test
复制代码
然后通过 tree
我们就拿到这样一个目录结构:
test
├── [Content_Types].xml
├── _rels
├── docProps
│ ├── app.xml
│ ├── core.xml
│ └── custom.xml
└── xl
├── _rels
│ └── workbook.xml.rels
├── sharedStrings.xml
├── styles.xml
├── theme
│ └── theme1.xml
├── workbook.xml
└── worksheets
├── sheet1.xml
└── sheet2.xml
复制代码
啊哈,干得漂亮,居然全都是 xml
文件。
我们在打开 xml
一探究竟,可以看出有几个文件很显眼,就是 worksheets
下的 sheet1.xml
和 sheet2.xml
,还有 workbook.xml
,其他的 styles
、theme
一看就是和样式有关系,_rels
感觉就是什么内部引用,我们先看看两个 sheet
的 xml
文件,看看猜测是否正确,贴下