2017-02-22 44 views
0

我正在使用由「SheetJSDev」製作的「SheetJS」中名爲「js_xlsx」的Node.js包處理流星應用程序。我使用這個包將上傳的Excel工作表轉換爲後端的JSON,因此我可以將它存儲在我的MongoDB中,並用它在前端中完成一些高級的分類工作。只有一個問題。該軟件包將跳過具有空頭的列,除了具有空頭的最右側列之外。我已經發現這個軟件包處理帶有空頭的列很好,但是因爲JSON鍵需要是唯一的,所以它只保存JSON對象中最後一個帶有空頭的列。如何讓js_xlsx保存所有空頭文件?

例子:

裝滿所有的標題:

enter image description here

enter image description here

正如你所看到的,一切運作良好時,所有標題都充滿。

隨着第一和第二最後一個頭空:

enter image description here

enter image description here

這裏可以看到,第二個最後一列擺在了面前得到,用「不確定」頭,並且第列甚至不在那裏(因爲它們被第二列的最後一列覆蓋,因爲它們都具有「未定義」作爲它們的鍵)。

隨着第3列和第2最後頭空:

enter image description here

enter image description here

同樣的東西,與第3和第4圖像。只有具有空頭的最後一列纔會進入JSON對象。

現在,我瀏覽了源代碼並搜索了GitHub頁面,甚至要求Google幫助我,沒有多大功效。

我想知道的是:

你如何js_xlsx過程與空頭所有列?

到GitHub的頁面的鏈接,該包是:

https://github.com/SheetJS/js-xlsx

任何幫助,非常感謝!

回答

0

嫌疑人你的問題是,默認情況下,SheetJS(xlsx.js)sheet_to_json函數完全跳過空單元格。 (沒有一個通用的「如何處理空單元格」......他們默認不幸(imho),簡單地跳過整個單元格...讓你的JSON混亂不堪。)鑑於他們使用標題作爲鍵,你說,這可能保持整個列不生成。

您可以通過在選項對象中指定一個可以選擇傳遞給該函數的defval值來更改此行爲。

例如:

filledOutJSON = XLSX.utils.sheet_to_json(worksheet,{"defval":"whatever_you_want"});

注意,你可以指定一個空字符串,"",如果你想要的。

您可以指定其他選項,如下所示:https://github.com/SheetJS/js-xlsx#json

相關問題