Здравствуйте, вы могли бы мне помочь? Я пытаюсь экспортировать данные, полученные от службы, в файл XLSX, но я не знаю, как это сделать, я скопировал небольшой пример с Youtube, но IDK почему он не работает.
Я создал службу с модулями XLSX и Saver.
import { Injectable } from '@angular/core';
import * as FileSaver from 'file-saver';
import * as XLSX from 'xlsx';
const EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreedsheetml.sheet; charset=UTF-8';
const EXCEL_EXT = '.xlsx';
@Injectable({
providedIn: 'root'
})
export class ExportExcellService {
exportToExcel(json: any[], excelFileName: string): void {
const WORKSHEEP: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json);
const WORKBOOK: XLSX.WorkBook = { Sheets: { data: WORKSHEEP }, SheetNames: ['data'] };
const excelBuffer: any = XLSX.write(WORKBOOK, { bookType: 'xlsx' });
// llamado el metodo que guarda
this.saveExcel(excelBuffer, excelFileName);
}
// metodo de guardado
private saveExcel(buffer: any, fileName: string): void {
const data: Blob = new Blob([buffer], { type: EXCEL_TYPE });
FileSaver(data, fileName + 'export' + new Date());
}
}
И я экспортировал ее в свой компонент
import { Component, OnInit } from '@angular/core';
// importando el servicio con la data
import { VentasService } from '../../../services/ventas.service';
// importando el servicio de guardado
import { ExportExcellService } from '../../../services/export-excell.service';
// importaciones para jdpf
import jsPDF from 'jspdf';
@Component({
selector: 'app-table',
templateUrl: './table.component.html',
styleUrls: ['./table.component.css']
})
export class TableComponent implements OnInit {
// trabja en conjunto con el pipe
filterRow = '';
PaisFiltro = '';
// salva la data traida por el servicio
clientes: any = [];
constructor(private ventas: VentasService, private saveExcel: ExportExcellService) {
}
ngOnInit() {
this.ventas.getClientes().subscribe((data: any) => {
this.clientes = data;
// tslint:disable-next-line: prefer-for-of
for (let i = 0; i < this.clientes.length; i++) {
this.clientes[i].credito = Number(this.clientes[i].credito);
}
console.log('Clientes works');
console.log(this.clientes);
});
}
imprimirPDF() {
const documento = new jsPDF();
documento.fromHTML(document.querySelector('#agenda'), 20, 30);
documento.save('Agenda Clientes');
}
imprimirExcel() {
this.saveExcel.exportToExcel(this.clientes, 'Listado');
}
}
Другая функция imprimirPDF () работает хорошо imprimirExcel () - это функция, которую я использую для Excel, но я получил эту ошибку в консоли.
TableComponent.html:58 ERROR Error: Unrecognized type undefined
at write_zip_type (xlsx.js:20435)
at Object.writeSync [as write] (xlsx.js:20527)
at ExportExcellService.push../src/app/services/export-excell.service.ts.ExportExcellService.exportToExcel (export-excell.service.ts:19)
at TableComponent.push../src/app/components/dashboar/table/table.component.ts.TableComponent.imprimirExcel (table.component.ts:50)
at Object.eval [as handleEvent] (TableComponent.html:58)
at handleEvent (core.js:23107)
at callWithDebugContext (core.js:24177)
at Object.debugHandleEvent [as handleEvent] (core.js:23904)
at dispatchEvent (core.js:20556)
at core.js:21003
И я не знаю, что я делаю неправильно.