【发布时间】:2019-12-27 22:19:57
【问题描述】:
我有一个用例,我需要将用户数据导出到 excel 文件中。用户模型(mongo db 模型)包含array 类型的字段。导出时,每个字段都存储到 excel 文件中,除了该数组字段数据。如何将该数组数据作为逗号分隔值存储到 excel 文件中?
这是我的代码:
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);
});
});
}
示例代码是:
{
"name" : "Some Name",
"email" : "SomeName@gmail.com",
"phone" : "94XXXXXXXX",
"communityAccountNo" : "ABCD1234",
"status" : true,
"block" : "1",
"unit" : [
"9-2",
"9-3"
]
}
这是我得到的excel:
我想在 unit 标签下将单元元素存储为 9-2,9-3。有可能吗?
【问题讨论】:
标签: javascript node.js mongodb mongoose xlsx