安装 Node 模块
npm install node-xlsx
读取文件
let list = xlsx.parse(path.join(__dirname, 'browser.xlsx'))
console.log(list) // 此时咱们先看一下 list 的值是什么
/**
[ { name: 'Sheet1',
data:
[ [Array],
[Array],
[Array],] } ]
可以看到读取出的 xlsx 文件其实就是一个对象 那么咱们再看一下 里面的 array 吧
*/
console.log(list[0].data)
/**
[ [ 'mobile',
'Kernel',
'version',
<1 empty item>,
'PC',
'Kernel',
'verison' ],
[ 'huewei',
'webkit T9 基于webkit',
'10.9.0.4929',
<1 empty item>,
'safari',
'webkit' ] ]
Array里面包含的是数据集合, 也就是说咱们的内容只要符合这个数据结构, 就可以执行写入操作, 下面咱们再放个图 好理解对应的关系
*/
以上可以得出
list[0].sheet1
等价于 xlsx 下的 sheet1;list[0].data[n]
里面的每一项等价于 xlsx 中的每一行;
总结最后需要整理出的数据结构[{name: 'Sheet1', data: [ ['row1-Cell1', 'row1-Cell2'], ['row2-Cell1', 'row2-Cell2'] ]}]
写入文件
比如写个案例:去除 xlsx中的空格输出到一个新的xlsx中;
const xlsx = require('node-xlsx')
const fs = require('fs') // node-xlsx 没有提供写的操作所以要借助 fs模块
const path = require('path')
let sheets = xlsx.parse(path.join(__dirname, 'browser.xlsx'))
let newSheets = [{
name: 'Sheet1',
data: []
}]
sheets.forEach(sheet => {
// sheet.data == 每一个 sheet 中的所有内容
sheet.data.forEach(row => {
// row = 每一个 sheet 中的 每一行数据(array)
let newRow = JSON.stringify(row).replace(/null,/g, '')
newSheets[0].data.push(JSON.parse(newRow))
})
})
// 开始写入文件
let buffer = xlsx.build(newSheets)
fs.writeFile('output.xlsx', buffer, (err, res) => console.log(res))