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

标签 javascript json node.js meteor js-xlsx

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

例子:

填充所有标题:

enter image description here

enter image description here

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

第一个和倒数第二个标题为空:

enter image description here

enter image description here

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

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

enter image description here

enter image description here

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

现在,我匆匆浏览了源代码并搜索了 GitHub 页面,甚至请求 Google 帮助我,但没有多大用处。

我想知道的是:

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

包的 GitHub 页面链接是:

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

非常感谢任何帮助!

最佳答案

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

关于javascript - 你如何让 js_xlsx 保存所有空标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42393344/

相关文章:

php - (Swift,iOS)根据 PHP 脚本中使用的 POST 变量从 mySQL 数据库解析 JSON 对象?

javascript - 在 Django 框架中获取 js 文件中的 JSON 数据

javascript - 正则表达式查找并替换文件 Javascript 中的文件路径

node.js - 如何在 ovh 托管上使用 docker-compose

javascript - preventDefault() 后未正确发送 POST 数据 - 新 Google 的隐形 reCAPTCHA 相关

javascript - Socket.Io 传输轮询错误

javascript - jQuery 缓慢更改 css 属性

json - 将索引上的项目属性更新为 Angular 2 中存储的数组

node.js - 部署到heroku后,后端的req.query在React前端变成了json,如何修复?

javascript - 具有相同输入值的不同哈希值