如何让js_xlsx保存所有空的表头?

4
我正在开发一个Meteor应用程序,使用来自“SheetJSDev”的“SheetJS”制作的名为“js_xlsx”的Node.js包。我使用此软件包将上传的Excel表格转换为后端中的JSON,以便我可以将其存储在MongoDB中,并在前端中使用它来进行一些花哨的分类处理。只有一个问题。该软件包跳过具有空标题的列,除了具有空标题的最右侧列。我已经发现该软件包可以正确处理具有空标题的列,但由于JSON键需要是唯一的,因此它只保存具有空标题的最后一列在JSON对象中。
举个例子: 所有标题都填写:

enter image description here

enter image description here

作为您可以看到,当所有标题都填写时,一切都很顺利。
当第一个和倒数第二个标题为空时:

enter image description here

enter image description here

在这里,您可以看到倒数第二列被放在了最前面,带有一个“未定义”的标题,而第一列甚至没有出现在其中(因为它被倒数第二列覆盖了,因为它们都有“未定义”作为它们的键)。
使用前3列和倒数第二个标题为空:

enter image description here

enter image description here

与第三和第四张图片一样,只有最后一列带空标题的内容将被包含在JSON对象中。
现在,我已经查看了源代码,搜索了GitHub页面,甚至向谷歌求助,但没有什么效果。
我想知道的是:
如何让js_xlsx处理所有带空标题的列?
该包的GitHub页面链接为:

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

任何帮助都非常感激!
1个回答

6
我怀疑您的问题在于,默认情况下,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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接