const fs = require('fs')
const convert = require('xml-js')
const zip = require('node-zip')
module.exports.readFile = readFile
function readFile (fileName) {
const a = zip(fs.readFileSync(fileName), { base64: false, checkCRC32: true })
return readZip(a)
}
function readZip (f) {
const keys = Object.keys(f.files)
let workbookRels
let worksheets = []
keys.forEach(v => {
switch (v) {
case 'xl/_rels/workbook.xml.rels':
workbookRels = v
return
default:
if (v.length > 14) {
const len = v.length
if (v.startsWith('xl/worksheets')) {
worksheets.push([v.substring(14, len - 4), v])
}
}
}
})
if (!workbookRels) throw new Error('xl/_relx/workbook.xml.rels not found in input xlsx.')
if (worksheets.length === 0) throw new Error('Input xlsx contains no wroksheets.')
const returnDate = []
console.log(worksheets)
worksheets.forEach(v => {
const data = readSheetsFromZipFile(f.files[v[1]]._data)
returnDate.push({ sheetName: v[0], data })
})
return returnDate
}
function readSheetsFromZipFile (sheetXML) {
const data = convert.xml2js(sheetXML)
const sheets = []
data.elements[0].elements.forEach(v => {
if (v.name !== 'sheetData') return
v.elements.forEach(v1 => {
const s = v1.elements.map(v2 => {
return getText(v2)
})
sheets.push(s)
})
})
return sheets
}
function getText (d) {
if (d.elements && d.elements[0]) {
return getText(d.elements[0])
} else {
return d.text
}
}
node 簡單解析 xlsx
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門丐吓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人趟据,你說我怎么就攤上這事券犁。” “怎么了汹碱?”我有些...
- 文/不壞的土叔 我叫張陵粘衬,是天一觀的道長。 經(jīng)常有香客問我咳促,道長稚新,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任跪腹,我火速辦了婚禮褂删,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘冲茸。我一直安慰自己屯阀,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開白布噪裕。 她就那樣靜靜地躺著蹲盘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪膳音。 梳的紋絲不亂的頭發(fā)上召衔,一...
- 文/蒼蘭香墨 我猛地睜開眼想罕,長吁一口氣:“原來是場噩夢啊……” “哼悠栓!你這毒婦竟也來了霉涨?” 一聲冷哼從身側(cè)響起,我...
- 正文 年R本政府宣布窿锉,位于F島的核電站,受9級特大地震影響膝舅,放射性物質(zhì)發(fā)生泄漏嗡载。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一仍稀、第九天 我趴在偏房一處隱蔽的房頂上張望洼滚。 院中可真熱鬧,春花似錦技潘、人聲如沸遥巴。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽铲掐。三九已至,卻和暖如春值桩,著一層夾襖步出監(jiān)牢的瞬間摆霉,已是汗流浹背。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 現(xiàn)在我們來簡單的實現(xiàn)一個 Node 命令行(cli)文件管理程序向挖。 效果演示 需求分析 程序在命令行中運(yùn)行蝌以,那么程...
- 前言從Node.js進(jìn)入人們的視野時,我們所知道的它就由這些關(guān)鍵字組成 事件驅(qū)動何之、非阻塞I/O饼灿、高效、輕量帝美,它在官...
- 想去潮州很久了,因為那里濃郁的客家文化晤硕,功夫茶和許許多多的小吃悼潭。可是潮州行計劃了很多久都因為這樣或者那樣的原...