web-dev-qa-db-ja.com

angular 2でExcelファイルを読み込む

ng2-File-upload 、iを使用しています。Excelファイルとそのすべての行を読み取り、合計数を取得します。このモジュールを使用してそれを達成する方法と、プレーンなJavaScriptまたはTypeScriptで実行する方法はありますか。

7
Asad Shah

受け入れられた回答に記載されているパッケージを使用しました。 ng2-file-uploadには、コールバック関数this.uploader.onAfterAddingFileを持つuploaderがあります。変更関数を呼び出して、次のようにファイルを読み取りました。

 onFileChange(file: 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 */
        var data = <any>(XLSX.utils.sheet_to_json(ws, { header: 1 }));
        this.totalInventories = data.length > 0 ? data.length - 1 : 0;
    };
    if (file._file)
        reader.readAsBinaryString(file._file);
 }

それが誰にも役立つことを願っています:)

8
Asad Shah