你如何让 js_xlsx 保存所有空标题?

Mag*_*ørn 4 javascript json node.js meteor js-xlsx

我正在开发一个 Meteor 应用程序,使用由“SheetJSDev”制作的“SheetJS”中名为“js_xlsx”的 Node.js 包。我正在使用这个包在后端将上传的 Excel 表转换为 JSON,这样我就可以将它存储在我的 MongoDB 中,并使用它在前端做一些花哨的分类工作。只有一个问题。该包会跳过标题为空的列,但最右侧的列的标题为空。我已经发现该包可以很好地处理带有空标题的列,但是因为 JSON 键需要是唯一的,所以它只保存 JSON 对象中带有空标题的最后一列。

例子:

填充所有标题:

在此处输入图片说明

在此处输入图片说明

如您所见,当所有标题都填满时,一切正常。

第一个和第二个最后一个标题为空:

在此处输入图片说明

在此处输入图片说明

在这里你看到倒数第二列放在前面,有一个“未定义”的标题,第一列甚至不在那里(因为它被倒数第二列覆盖,因为它们都有“未定义”作为它们的键)。

前 3 列和倒数第二个标题为空:

在此处输入图片说明

在此处输入图片说明

与第三张和第四张图像相同的东西。只有带有空标题的最后一列才会进入 JSON 对象。

现在,我已经浏览了源代码并搜索了 GitHub 页面,甚至要求 Google 帮助我,但没有太大帮助。

我想知道的是:

你如何让 js_xlsx 处理所有带有空标题的列?

包的 GitHub 页面的链接是:

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

任何帮助深表感谢!

low*_*ler 5

怀疑您的问题是,默认情况下,SheetJS (xlsx.js) sheet_to_json 函数完全跳过空单元格。(没有一个通用的“如何处理空单元格”......不幸的是(恕我直言),他们默认只是跳过整个单元格......让你的 JSON 一团糟。)鉴于他们使用标题作为键,如您说,这可能会使整个列无法生成。

您可以通过在选项对象中指定一个 defval 值来更改此行为,该值可以有选择地传递给该函数。

例如:

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

请注意,""如果需要,您可以指定空字符串 , 。

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