首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在节点js中将JSON对象转换为excel文件时,将Javascript数组元素存储在excel文件中?

如何在节点js中将JSON对象转换为excel文件时,将Javascript数组元素存储在excel文件中?
EN

Stack Overflow用户
提问于 2019-12-27 14:12:50
回答 1查看 1.9K关注 0票数 0

我有一个usecase,需要将用户数据导出到excel文件中。用户模型(mongo模型)包含一个类型为array的字段。导出时,除数组字段数据外,每个字段都存储在excel文件中。如何将数组数据作为逗号分隔的值存储到excel文件中?

这是我的密码:

代码语言:javascript
复制
var XLSX = require('xlsx');

exportCustomerDataToExcel: async function(customerId){
    let err,customerData;

    [err, customerData]=await to(Customer.find({"_id":customerId},'name email phone unit block communityAccountNo status').lean().exec());

    //*name email phone unit block communityAccountNo status* are fields of customer & unit is an array

    if(err) {TE(err, true)};

    if(!customerData || customerData.length==0) return false;

    if(customerData){
        customerData.map(function(elem) {
            if (elem._id) delete elem._id

        });
        var newWB=XLSX.utils.book_new();
        var newWS=XLSX.utils.json_to_sheet(customerData);
        XLSX.utils.book_append_sheet(newWB, newWS,"Customers");
        [err,excelWB]=await to(this.writeFileQ(newWB, "./public/exports/"+customerId+".xlsx"));
        if(err) TE(err, true);
        return ({file:customerId+".xlsx"});
    }
},

writeFileQ: function(workbook, filename) {
    return new Promise((resolve, reject) => {
        XLSX.writeFileAsync(filename, workbook, (error, result) => {
          (error)? reject(error) : resolve(result);
        });
    });
}

示例代码是:

代码语言:javascript
复制
{
    "name" : "Some Name",
    "email" : "SomeName@gmail.com",
    "phone" : "94XXXXXXXX",
    "communityAccountNo" : "ABCD1234",
    "status" : true,
    "block" : "1",
    "unit" : [ 
        "9-2", 
        "9-3"
    ]
}

这里是我的excel:

我想将单元元素存储为,9-2,9-3下的单元选项卡。是否可以这样做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-27 14:19:57

在创建excel文件之前,应将数组重新格式化为字符串,以使其以所需的方式工作。您可以通过使用Array join方法来实现这一点,并使用,作为参数。就像这样:

代码语言:javascript
复制
customerData.unit = customerData.unit.join(',');

甚至customerData.unit = customerData.unit.join();,因为,是默认参数。

然后创建excel工作表。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59501982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档