我有一个usecase,需要将用户数据导出到excel文件中。用户模型(mongo模型)包含一个类型为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:

我想将单元元素存储为,9-2,9-3下的单元选项卡。是否可以这样做呢?
发布于 2019-12-27 14:19:57
在创建excel文件之前,应将数组重新格式化为字符串,以使其以所需的方式工作。您可以通过使用Array join方法来实现这一点,并使用,作为参数。就像这样:
customerData.unit = customerData.unit.join(',');甚至customerData.unit = customerData.unit.join();,因为,是默认参数。
然后创建excel工作表。
https://stackoverflow.com/questions/59501982
复制相似问题