node-xlsx 读写 excel 转

转自:https://www.cnblogs.com/article-record/p/12762496.html

安装 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))
点赞
  1. BluffMaster说道:
    Google Chrome Windows 10
    https://t.me/s/officials_pokerdom/3449
  2. RoyalFlusher说道:
    Google Chrome Windows 10
    https://t.me/s/dragon_money_mani
  3. AceSorcerer说道:
    Google Chrome Windows 10
    http://images.google.ki/url?q=https://t.me/officials_7k/317
  4. AllInAce说道:
    Google Chrome Windows 10
    В лабиринте игр, где всякий сайт пытается привлечь обещаниями быстрых призов, рейтинг лучших казино онлайн по отзывам становится той самой картой, что проводит через заросли обмана. Игрокам профи плюс новичков, которые пресытился из-за ложных посулов, такой инструмент, чтобы почувствовать реальную выплату, словно ощущение ценной монеты у ладони. Минус лишней болтовни, только проверенные сайты, в которых rtp не только показатель, но конкретная удача.Составлено на основе поисковых запросов, будто сеть, что захватывает топовые свежие тенденции на интернете. Здесь нет пространства к стандартных приёмов, любой пункт как ход у покере, где подвох проявляется немедленно. Хайроллеры видят: в стране стиль речи и сарказмом, в котором юмор скрывается под намёк, позволяет избежать ловушек.В https://share.evernote.com/note/8f618260-e536-9cfe-04c6-2983fff7aa03 такой рейтинг лежит словно раскрытая раздача, подготовленный для старту. Посмотри, когда хочешь ощутить пульс подлинной ставки, без иллюзий да провалов. Тем тех ценит ощущение выигрыша, он словно держать ставку на ладонях, вместо смотреть по дисплей.

发表回复

电子邮件地址不会被公开。必填项已用 * 标注