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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM