Показать содержимое файла Excel как HTML Таблица Angular - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь импортировать файл Excel и показать его содержимое в виде таблицы в веб-приложении

Что у меня есть:

read-excel.component. ts

import { Component, ElementRef, ViewChild, OnInit, Output } from '@angular/core';
import * as xlsx from 'xlsx';
const { read, utils: { sheet_to_json } } = xlsx;


@Component({
  selector: 'app-read-excel',
  templateUrl: './read-excel.component.html',
  styleUrls: ['./read-excel.component.css']
})

export class ReadExcelComponent implements OnInit {

constructor() {}

ngOnInit () {


}

$mport(data: any, options: xlsx.ParsingOptions): any[][] {
    const workBook: xlsx.WorkBook = read(data, options)
    const workSheet: xlsx.WorkSheet = workBook.Sheets[workBook.SheetNames[0]]
    return sheet_to_json(workSheet, {header : 1, raw: true})
}

}

и в моем read-excel.component. html


 Read Excel Files


однако , когда я импортирую файл, меня встречает ошибка Error: Cannot read property 'slice' of undefined в консоли

1 Ответ

1 голос
/ 06 января 2020

Попробуйте с этим stackblitz пример

import * as XLSX from 'xlsx';

onFileChange(evt: any) {
    /* wire up file reader */
    const target: DataTransfer = <DataTransfer>(evt.target);
    if (target.files.length !== 1) throw new Error('Cannot use multiple files');
    const reader: FileReader = new FileReader();
    reader.onload = (e: any) => {
      /* read workbook */
      const bstr: string = e.target.result;
      const wb: XLSX.WorkBook = XLSX.read(bstr, { type: 'binary' });

      /* grab first sheet */
      const wsname: string = wb.SheetNames[0];
      const ws: XLSX.WorkSheet = wb.Sheets[wsname];

      /* save data */
      this.data = <AOA>(XLSX.utils.sheet_to_json(ws, { header: 1 }));
      console.log(this.data);
    };
    reader.readAsBinaryString(target.files[0]);
  }


  export(): void {
    /* generate worksheet */
    const ws: XLSX.WorkSheet = XLSX.utils.aoa_to_sheet(this.data);

    /* generate workbook and add the worksheet */
    const wb: XLSX.WorkBook = XLSX.utils.book_new();
    XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');

    /* save to file */
    XLSX.writeFile(wb, this.fileName);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...