如何在angular4

时间:2018-07-12 01:01:56

标签: javascript excel angular

我需要通过使用文件输入类型选择一个Excel文件,并将该文件显示到特定的容器中,我需要执行一些操作。通过使用Sheet.js和xlsx,我在javascript中也遇到了同样的事情。为此,我使用canvas-datagrid,dropsheet和jquery。

Uncaught ReferenceError: importScripts is not defined
at scripts.bundle.js:10874

我需要帮助来获得结果。将js事物转换为Angular对我来说更好,因为它减少了创建新事物的时间。

2 个答案:

答案 0 :(得分:1)

尝试这个example on 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);
}

在您的HTML文件中

<input type="file" (change)="onFileChange($event)" multiple="false" />
<table>
    <tbody>
        <tr *ngFor="let row of data">
            <td *ngFor="let val of row">
                {{val}}
            </td>
        </tr>
    </tbody>
</table>
<button (click)="export()">Export!</button>

答案 1 :(得分:0)

您应该遵循这三个步骤

步骤1:导入ts-xlsx,请参考:https://www.npmjs.com/package/ts-xlsx进行安装

第2步:使用FileReader转换为arraybuffer

第3步:使用XLSX读取arraybuffer并将其转换为工作簿