我已经可以使用以下功能将JSON数据导出到Excel:
public exportAsExcelFile(json: any[], excelFileName: string) :Promise<Object> {
const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json);
const workbook: XLSX.WorkBook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] };
const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });
return (this.saveAsExcelFile(excelBuffer, excelFileName));
}
private saveAsExcelFile(buffer: any, fileName: string):Promise<Object> {
const data: Blob = new Blob([buffer], {type: EXCEL_TYPE});
return await FileSaver.saveAs(data, fileName + '-' + new Date().toString()+ EXCEL_EXTENSION);
}
但是我不知道如何格式化此文件,因此我至少可以使粗体标头和具有自动调整功能的单元格
。答案 0 :(得分:0)
如果您使用的是js-xlsx,则必须切换到价格昂贵的PRO版本才能实现。
这是社区版本。我们还提供带有 性能增强,样式等其他功能,以及 专门的支持。
您可以使用ExcelJS库。它提供免费的样式功能
const workbook = new ExcelJS.Workbook();
workbook.creator = 'Your company name';
workbook.created = new Date();
const worksheet = workbook.addWorksheet('Worksheet 1');
然后您可以指定列宽:
worksheet.columns = [
{ width: 15 },
{ width: 30 },
{ width: 10 }
];
您可以使用以下代码制作粗体标题:
worksheet.getRow(1).font = { bold: true };
指定单元格样式:
worksheet.getCell('A1').border = {
top: ...,
left: ...,
bottom: ...,
right: ...
};
worksheet.getCell('A1').font = ...;
最后导出文件
import {saveAs} from 'file-saver';
const EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';
...
workbook.xlsx.writeBuffer()
.then((file: any) => {
const blob = new Blob([file], { type: EXCEL_TYPE });
saveAs(blob, `fileName.xlsx`);
});
遵循此link来查找更多样式选项。