1.安装插件
npm install xlsx --save
2.建立Service,导入模块,实现方法共用
相关代码:
import { Injectable } from '@angular/core';
import * as XLSX from 'xlsx';
@Injectable({
providedIn: 'root'
})
export class DownloadExcelService {
constructor() { }
/**
* @method downloadExcel 导出为excel档
* @param fname 文件名
* @param json excel内容
*/
downloadExcel(fname, json): void {
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' });
const blob = new Blob(
[excelBuffer],
{ type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8' }
);
saveAs(blob, fname + '-' + new Date().valueOf() + '.xlsx');
}
}
3.传入后台所给数据,在Component调用Service
this.downExcelService.downloadExcel('CT',data) //CT是文件名称 data是相关数据为Json格式
4.其他方法,此处未建立Service,可在Function()直接引用(需要先导入 XLSX模块)
该方法相对简单一点,相关代码:
import * as XLSX from 'xlsx';
//导出Excel方法
const ws:XLSX.WorkSheet=XLSX.utils.json_to_sheet(data); //data是Json格式的相关数据
const wb: XLSX.WorkBook=XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb,ws);
/*saveto file*/
XLSX.writeFile(wb,'filename'); //此处filename是导出时的文件名称,该名称要加.xlsx后缀才可导出.xlsx文件,例如Excel.xlsx