怎么让js_xlsx存空headers?

How do you make js_xlsx save all empty headers?

我正在开发 Meteor 应用程序,使用来自 "SheetJS" 的名为 "js_xlsx" 的 Node.js 包,由 "SheetJSDev" 制作。我正在使用此包将上传的 Excel sheet 转换为 back-end 中的 JSON,因此我可以将其存储在我的 MongoDB 中并使用它来做front-end 中的一些花哨的分类内容。只有一个问题。该程序包会跳过具有空 header 的列,但具有空 header 的 right-most 列除外。我已经发现该包可以很好地处理带有空 header 的列,但是因为 JSON 键需要唯一,所以它只保存最后一列带有空 header 的 JSON object.

示例:

所有 header 已填充:

如您所见,当所有 header 都已填充时一切正常。

第一个和倒数第二个 header 为空:

在这里你看到倒数第二列放在前面,有一个 "undefined" header 而第一列甚至不在那里(因为它被倒数第二列覆盖) , 因为他们都有 "undefined" 作为他们的键)。

前 3 列和倒数第二列 header 为空:

与第 3 和第 4 张图片相同的内容。只有最后一列空 header 才会进入 JSON object.

现在,我已经快速浏览了源代码并搜索了 GitHub 页面,甚至请求 Google 帮助我,但无济于事。

我想知道的是:

How do you make js_xlsx process all columns with empty headers?

包的 GitHub 页面的 link 是:

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

非常感谢任何帮助!

怀疑您的问题是,默认情况下,SheetJS (xlsx.js) sheet_to_json 函数会完全跳过空单元格。 (没有通用的 "How to deal with empty cell"...不幸的是(恕我直言)他们默认为简单地跳过整个单元...让您的 JSON 陷入混乱。)鉴于他们使用 headers 作为键,正如您所说,这 可能 会阻止生成整个列。

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

例如:

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

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

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