Angular 7 和 xlsx 库如何使用字段名而不是索引导出数组
Angular 7 and xlsx library how to export array with field name instead of index
在 stack, and this stackblitz 上的这个问题之后,如果分页没有显示所有数据,material table 似乎没有完全导出到 excel。
因此,我将整个数组导出,但问题是主要字段名称显示的是索引而不是名称:
所以代替:
exportTable()
{
//let data = Object.values(this.dataSource);
const ws: xlsx.WorkSheet=xlsx.utils.table_to_sheet(data);
const wb: xlsx.WorkBook = xlsx.utils.book_new();
xlsx.utils.book_append_sheet(wb, ws, 'All Ind. Searched Data Export');
/* save to file */
xlsx.writeFile(wb, 'ExportAllData_Ind.xlsx');
}
我改为:
exportTable()
{
let data = Object.values(this.dataSource);
const ws: xlsx.WorkSheet=xlsx.utils.json_to_sheet(data);
const wb: xlsx.WorkBook = xlsx.utils.book_new();
xlsx.utils.book_append_sheet(wb, ws, 'All Ind. Searched Data Export');
/* save to file */
xlsx.writeFile(wb, 'ExportAllData_Ind.xlsx');
}
问题是导出的 excel 将字段名称设置为索引,然后在末尾添加真实的字段名称:
我知道是数组相关的东西,但是怎么导出只有字段名部分的数组呢
好的,我找到了自己的解决方案,直到提取 angular material 数据 table 的问题得到解决,因为它只提取活动分页 sheet 而不是所有 table ].我只是用了传统的方法:
exportTable()
{
let newArray:any[]=[];
let data = Object.values(this.allsearched);
Object.keys(data).forEach((key, index)=>{
newArray.push({
'Ind. ID': data[key].individual_id,
'HH ID': data[key].hh_id,
'Name(en)': data[key].ind_first_name_en+' '+data[key].ind_last_name_en,
'Name(ar)': data[key].ind_first_name_ar+' '+data[key].ind_last_name_ar,
'UID': data[key].uId,
'Gender': data[key].ind_gender,
'D.O.B': data[key].dob,
'Head Of HH': data[key].head_of_hh,
'Phone Number': data[key].phone,
'Status': data[key].ind_status,
'User ID': data[key].user_id
})
})
const ws: xlsx.WorkSheet=xlsx.utils.json_to_sheet(newArray);
const wb: xlsx.WorkBook = xlsx.utils.book_new();
xlsx.utils.book_append_sheet(wb, ws, 'All Ind. Searched Data Export');
/* save to file */
xlsx.writeFile(wb, 'ExportAllData_Ind.xlsx');
}
在 stack, and this stackblitz 上的这个问题之后,如果分页没有显示所有数据,material table 似乎没有完全导出到 excel。
因此,我将整个数组导出,但问题是主要字段名称显示的是索引而不是名称:
所以代替:
exportTable()
{
//let data = Object.values(this.dataSource);
const ws: xlsx.WorkSheet=xlsx.utils.table_to_sheet(data);
const wb: xlsx.WorkBook = xlsx.utils.book_new();
xlsx.utils.book_append_sheet(wb, ws, 'All Ind. Searched Data Export');
/* save to file */
xlsx.writeFile(wb, 'ExportAllData_Ind.xlsx');
}
我改为:
exportTable()
{
let data = Object.values(this.dataSource);
const ws: xlsx.WorkSheet=xlsx.utils.json_to_sheet(data);
const wb: xlsx.WorkBook = xlsx.utils.book_new();
xlsx.utils.book_append_sheet(wb, ws, 'All Ind. Searched Data Export');
/* save to file */
xlsx.writeFile(wb, 'ExportAllData_Ind.xlsx');
}
问题是导出的 excel 将字段名称设置为索引,然后在末尾添加真实的字段名称:
我知道是数组相关的东西,但是怎么导出只有字段名部分的数组呢
好的,我找到了自己的解决方案,直到提取 angular material 数据 table 的问题得到解决,因为它只提取活动分页 sheet 而不是所有 table ].我只是用了传统的方法:
exportTable()
{
let newArray:any[]=[];
let data = Object.values(this.allsearched);
Object.keys(data).forEach((key, index)=>{
newArray.push({
'Ind. ID': data[key].individual_id,
'HH ID': data[key].hh_id,
'Name(en)': data[key].ind_first_name_en+' '+data[key].ind_last_name_en,
'Name(ar)': data[key].ind_first_name_ar+' '+data[key].ind_last_name_ar,
'UID': data[key].uId,
'Gender': data[key].ind_gender,
'D.O.B': data[key].dob,
'Head Of HH': data[key].head_of_hh,
'Phone Number': data[key].phone,
'Status': data[key].ind_status,
'User ID': data[key].user_id
})
})
const ws: xlsx.WorkSheet=xlsx.utils.json_to_sheet(newArray);
const wb: xlsx.WorkBook = xlsx.utils.book_new();
xlsx.utils.book_append_sheet(wb, ws, 'All Ind. Searched Data Export');
/* save to file */
xlsx.writeFile(wb, 'ExportAllData_Ind.xlsx');
}