重慶市建設(shè)工程信息網(wǎng)一體化平臺河源市企業(yè)網(wǎng)站seo價(jià)格
前言
今天用到XLSX來解析excel文件,調(diào)用XLSX.utils.sheet_to_json(worksheet),發(fā)現(xiàn)如果單元格為空的話,解析出來的結(jié)果,就會缺少相應(yīng)的key(如圖所示)。但是我想要單元格為空的話,值就默認(rèn)給空字符串,怎么辦呢?只能去看看源碼了,看有沒有給默認(rèn)值的方法。
源碼探究
找源碼里的sheet_to_json()方法,發(fā)現(xiàn)有三個(gè)同名的方法,有兩個(gè)參數(shù),第一個(gè)worksheet是要解析的excel文件的工作簿對象,第二參數(shù)opts?: Sheet2JSONOpts,
?表示是這個(gè)參數(shù)可有可無,你不傳就沒有,Sheet2JSONOpts這個(gè)是什么東西?我也不知道,只能接著往下看源碼有沒有這個(gè)東西的定義。(一般都會有)
果然,如我所料,終于在源碼找到Sheet2JSONOpts的定義,發(fā)現(xiàn)有五個(gè)變量,這五個(gè)變量都帶?,說明這個(gè)五個(gè)變量都可有可無。然后我就看到圖中紅框的部分,發(fā)現(xiàn)注釋寫這著Default value for null/undefined values,意思是值為空或未定義的默認(rèn)值變量。這是不就是我要找的解決方法了嗎?高興得趕緊去實(shí)現(xiàn)一下。
解決
按照源碼來定義第二個(gè)參數(shù),給defval賦值為空的字符串,如代碼所示
const sheet2JSONOpts = {/** Default value for null/undefined values */defval: ''//給defval賦值為空的字符串
}
//調(diào)用方法
const results = XLSX.utils.sheet_to_json(worksheet, sheet2JSONOpts)
console.log(results)
最后,結(jié)果成功解決我問題,如下圖所示
總結(jié)
在用一些插件的時(shí)候,有些問題,其實(shí)可以通過看源碼來找到很好的解決方法,插件會封裝好一些方法,來給我們調(diào)用。