如何使用 xlsx npm 库将嵌套的 json 对象转换为 excel 表?
Posted
技术标签:
【中文标题】如何使用 xlsx npm 库将嵌套的 json 对象转换为 excel 表?【英文标题】:How to convert a nested json object into an excel table using the xlsx npm library? 【发布时间】:2019-10-29 02:31:13 【问题描述】:我有一个嵌套的 json 对象。为了简单起见:
data = 'key1': 1, 'key2': 2, 'key3': 'nestedKey1': 3, 'nestedKey2': 4
一个真实的对象更大,但重点是它是一个嵌套的对象。值可以是字符串、数字或其他对象。 现在我需要得到一个excel表(对于这个特定的json看起来像这样):
|----------------------------------------
| key1 | key2 | key3 |
| | |--------------------------
| | | nestedKey1 | nestedKey2 |
|----------------------------------------
| 1 | 2 | 3 | 4 |
|----------------------------------------
为了做到这一点,我尝试使用 xlsx 库。我按如下方式导入库:
import WorkSheet, WorkBook, utils, writeFile from 'xlsx';
在我的方法中我定义了对象:
let myObj = 'key1': 1, 'key2': 2, 'key3': 'nestedKey1': 3, 'nestedKey2': 4
然后我创建一个工作表和工作簿:
const workSheet: WorkSheet = utils.json_to_sheet([myObj]);
const workBook: WorkBook = utils.book_new();
utils.book_append_sheet(workBook, workSheet, 'object_to_save');
最后将其写入文件:
writeFile(workBook, 'Tests.xlsx');
但完全可以预料,它不会像我希望的那样处理嵌套对象。我不知道我应该怎么做才能得到想要的结果。
【问题讨论】:
嗨,Igor,对不起,我没怎么用过这个库。 Excel 中是否有嵌套列功能,或者您是否希望它们成为“分组列”?我可能只是预处理对象以将其展平:let myObj = 'key1': 1, 'key2': 2, 'key3.nestedKey1': 3, 'key3.nestedKey2': 4
在执行 json_to_sheet 之前,如果这对您的用例来说可以
您好,感谢您的回复。好吧,我想过将对象展平,但我希望图书馆能够做更复杂的事情。由于很多原因,我不太喜欢 excel,因此我没有使用太多,所以我不确定上面的结构是什么样的。据我了解,这些列是嵌套的。我得到了一个 xlsx 格式的表格样本,但我还没有找到如何使用这个库获得所需的结果。
请阅读github.com/SheetJS/js-xlsx/issues/1059#issuecomment-377824371该库不支持复杂的Json结构
是否需要使用SheetJS?是否可以使用其他库,例如 ExcelJS (github.com/exceljs/exceljs)?
***.com/questions/55732859/… 在这里提出了类似的问题,您可能会知道它是如何实现的。
【参考方案1】:
它总是只会给你扁平化的结果。您可以尝试一些仅进行扁平化的在线转换器。 https://json-csv.com/
但如果您使用的是 kendo-grid,它会按照您的预期导出。
https://demos.telerik.com/kendo-ui/grid/excel-export
【讨论】:
以上是关于如何使用 xlsx npm 库将嵌套的 json 对象转换为 excel 表?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用简单的 JSON 库将 json 文件读入 java
java - 如何使用Java中的Volley库将JSON api数据放入recyclerview?
如何使用 SQFLite 或 Moor 库将 JSON 数据存储到颤振中的数据库表中