Что плохого в том, что я пытаюсь напечатать данные в отличном формате, используя angular и модуль XLSX? - PullRequest
0 голосов
/ 02 марта 2020

Здравствуйте, вы могли бы мне помочь? Я пытаюсь экспортировать данные, полученные от службы, в файл 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

И я не знаю, что я делаю неправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...