Ниже приведен код моего углового компонента, я несколько раз вызываю exportAsXLSX (), чтобы не получать исключений из webapi
exportAsXLSX(): void {
this.providerService.getALLDataExcel(this.skipForExcel,
this.takeForExcel).subscribe(
(response) =>
this.getSearchProviderExcelDataSucces(response),
(error) => this.getSearchProviderExcelDataFailure(error));
}
Сейчас я делаю 20 запросов на тестирование.Для 250 000 записей мне, возможно, придется сделать 200 запросов,
i: number = 0;
getSearchProviderExcelDataSucces(response) {
if (this.i != 20) {
this.providerExcel = this.providerExcel.concat(response)
this.skipForExcel = this.skipForExcel + 1000;
this.exportAsXLSX();
this.i = this.i + 1;
}
else {
this.excelService.exportAsExcelFile(this.providerExcel,
'test');
}
ниже - мой сервис, я пытаюсь получить 1000 записей одновременно из веб-API,
httpOptions = {
headers: new HttpHeaders({
'Access-Control-Allow-Origin':'*',
'Content-Type': 'application/json',
})
}
getALLDataExcel(skip: number, take: number): Observable<any>
{
const options = new RequestOptions({
responseType: ResponseContentType.Blob,
});
let Searchparams = new HttpParams();
Searchparams = Searchparams.append('skip', skip.toString());
Searchparams = Searchparams.append('take', take.toString());
return this.http.get<any>(this.Url +
'providers/GetSearchData/GetALLDataDataForExcel',
{
params: Searchparams,headers: this.httpOptions.headers},)
.pipe(map(this.extractData));
}
Служба Excel дляскачать данные в формате Excel
const EXCEL_TYPE = 'application/vnd.openxmlformats-
officedocument.spreadsheetml.sheet;charset=UTF-8';
const EXCEL_EXTENSION = '.xlsx';
@Injectable({
providedIn: 'root'
})
export class ExcelService {
constructor() {}
public exportAsExcelFile(json: any[], excelFileName: string):
void
{
const worksheet: XLSX.WorkSheet =
XLSX.utils.json_to_sheet(json);
console.log('worksheet',worksheet);
const workbook: XLSX.WorkBook = { Sheets: { 'data': worksheet
},
SheetNames: ['data'] };
const excelBuffer: any = XLSX.write(workbook, { bookType:
'xlsx',
type:
'array'
});
this.saveAsExcelFile(excelBuffer, excelFileName);
}
private saveAsExcelFile(buffer: any, fileName: string): void {
const data: Blob = new Blob([buffer], {
type: EXCEL_TYPE
});
var date=new Date().toISOString().substr(0, 19).replace('T', '
').replace(/\-/g,'');
FileSaver.saveAs(data, fileName +'_'+ date.slice(0,date.indexOf('
'))
+ EXCEL_EXTENSION);
}
}