安裝 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))