node-xlsx 读写 excel

安装 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))
posted @ 2020-04-23 17:50  计算机相关人员  阅读(1815)  评论(0编辑  收藏  举报