xlsx 文件的本质
xlsx 文件是一个压缩包,里面包含了很多 xml 文件,这些 xml 文件就是 excel 的数据。
解析 xlsx 文件
修改 xlsx 文件的后缀为 zip,解压后可以看到里面的文件结构如下:
├── _rels
│   └── .rels
├── docProps
│   ├── app.xml
│   ├── core.xml
│   └── thumbnail.jpeg
├── xl
│   ├── _rels
│   │   └── workbook.xml.rels
│   ├── workbook.xml
│   ├── worksheets
│   │   └── sheet1.xml
│   └── sharedStrings.xml
└── [Content_Types].xml
JS 解析 xlsx 文件
用下面这两个包基本就可以解析 xlsx 文件了。
var JSZip = require('jszip')
var xml2js = require('xml2js')
解析 xlsx 文件的代码如下:
  read: function (opts, cb) {
    var me = this
    var t = me.zip.file(opts.file).asText()
    var parser = new xml2js.Parser({ explicitArray: false })
    parser.parseString(t, function (err, o) {
      if (err) {
        return new VError(err, 'getXML')
      }
      cb(err, o)
    })
  }