Angular 如何使用FileSaver.js从JSON导出Excel文件,并进行格式化和自动调整
我已经可以使用以下函数将JSON数据导出到Excel:Angular 如何使用FileSaver.js从JSON导出Excel文件,并进行格式化和自动调整,angular,typescript,filesaver.js,Angular,Typescript,Filesaver.js,我已经可以使用以下函数将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': workshe
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);
}
worksheet.getCell('A1').border = {
top: ...,
left: ...,
bottom: ...,
right: ...
};
worksheet.getCell('A1').font = ...;
public exportAsExcelFile(json:any[],excelFileName:string):承诺{
常量工作表:XLSX.worksheet=XLSX.utils.json\u to\u sheet(json);
常量工作簿:XLSX.workbook={工作表:{'data':工作表},工作表名称:['data']};
常量excelBuffer:any=XLSX.write(工作簿,{bookType:'XLSX',type:'array'});
返回(this.saveAsExcelFile(excelBuffer,excelFileName));
}
私有saveAsExcelFile(缓冲区:任意,文件名:字符串):承诺{
常量数据:Blob=新Blob([buffer],{type:EXCEL_type});
return wait FileSaver.saveAs(数据,文件名+'-'+新日期().toString()+EXCEL_扩展名);
}
但我不知道如何格式化此文件,因此我至少可以使用粗体标题和带有autofit的单元格。如果您正在使用,如果不切换到非常昂贵的PRO版本,则无法实现此目的
worksheet.getCell('A1').border = {
top: ...,
left: ...,
bottom: ...,
right: ...
};
worksheet.getCell('A1').font = ...;
这是社区版。我们还提供带有
性能增强、造型等附加功能,以及
专门支持
worksheet.getCell('A1').border = {
top: ...,
left: ...,
bottom: ...,
right: ...
};
worksheet.getCell('A1').font = ...;
你可以使用图书馆。它提供了无样式化功能
const workbook = new ExcelJS.Workbook();
workbook.creator = 'Your company name';
workbook.created = new Date();
const worksheet = workbook.addWorksheet('Worksheet 1');
worksheet.getCell('A1').border = {
top: ...,
left: ...,
bottom: ...,
right: ...
};
worksheet.getCell('A1').font = ...;
然后可以指定列宽度:
worksheet.columns = [
{ width: 15 },
{ width: 30 },
{ width: 10 }
];
worksheet.getCell('A1').border = {
top: ...,
left: ...,
bottom: ...,
right: ...
};
worksheet.getCell('A1').font = ...;
您可以使用以下代码设置粗体标题:
worksheet.getRow(1).font = { bold: true };
worksheet.getCell('A1').border = {
top: ...,
left: ...,
bottom: ...,
right: ...
};
worksheet.getCell('A1').font = ...;
指定单元格样式:
worksheet.getCell('A1').border = {
top: ...,
left: ...,
bottom: ...,
right: ...
};
worksheet.getCell('A1').font = ...;
最后导出文件
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`);
});
按照此操作可找到更多样式选项。如果您正在使用,则必须切换到非常昂贵的PRO版本才能实现此目的
worksheet.getCell('A1').border = {
top: ...,
left: ...,
bottom: ...,
right: ...
};
worksheet.getCell('A1').font = ...;
这是社区版。我们还提供带有
性能增强、造型等附加功能,以及
专门支持
worksheet.getCell('A1').border = {
top: ...,
left: ...,
bottom: ...,
right: ...
};
worksheet.getCell('A1').font = ...;
你可以使用图书馆。它提供了无样式化功能
const workbook = new ExcelJS.Workbook();
workbook.creator = 'Your company name';
workbook.created = new Date();
const worksheet = workbook.addWorksheet('Worksheet 1');
worksheet.getCell('A1').border = {
top: ...,
left: ...,
bottom: ...,
right: ...
};
worksheet.getCell('A1').font = ...;
然后可以指定列宽度:
worksheet.columns = [
{ width: 15 },
{ width: 30 },
{ width: 10 }
];
worksheet.getCell('A1').border = {
top: ...,
left: ...,
bottom: ...,
right: ...
};
worksheet.getCell('A1').font = ...;
您可以使用以下代码设置粗体标题:
worksheet.getRow(1).font = { bold: true };
worksheet.getCell('A1').border = {
top: ...,
left: ...,
bottom: ...,
right: ...
};
worksheet.getCell('A1').font = ...;
指定单元格样式:
worksheet.getCell('A1').border = {
top: ...,
left: ...,
bottom: ...,
right: ...
};
worksheet.getCell('A1').font = ...;
最后导出文件
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`);
});
按照此操作查找更多样式选项
worksheet.getCell('A1').border = {
top: ...,
left: ...,
bottom: ...,
right: ...
};
worksheet.getCell('A1').font = ...;