9.1 Library exceljs - quan1997ap/angular-app-note GitHub Wiki

import { Component, OnInit } from '@angular/core';
import * as Excel from 'exceljs/dist/exceljs.min.js';
import { HttpClient } from '@angular/common/http';
import { saveAs } from 'file-saver';
import * as fs from 'file-saver';

@Component({
  selector: 'app-exceljs',
  templateUrl: './exceljs.component.html',
  styleUrls: ['./exceljs.component.scss'],
})
export class ExceljsComponent implements OnInit {
  constructor(private http: HttpClient) {}

  readExcel1(event) {
    const workbook = new Excel.Workbook();
    const target: DataTransfer = <DataTransfer>event.target;
    if (target.files.length !== 1) {
      throw new Error('Cannot use multiple files');
    }

    /**
     * Final Solution For Importing the Excel FILE
     */

    const arryBuffer = new Response(target.files[0]).arrayBuffer();
    arryBuffer.then(function (data) {
      workbook.xlsx.load(data).then(function () {
        // play with workbook and worksheet now
        console.log(workbook);
        const worksheet = workbook.getWorksheet(1);
        console.log(worksheet.getCell('A1').value);
        console.log('rowCount: ', worksheet.rowCount);
        worksheet.eachRow(function (row, rowNumber) {
          console.log('Row: ' + rowNumber + ' Value: ' + row.values);
        });
      });
    });
  }

  readExcel($event) {
    var workbook = new Excel.Workbook();
    workbook.xlsx.readFile('../demo1.xlsx').then(function () {
      var worksheet = workbook.getWorksheet(1);
      console.log(worksheet.getCell('A1').value);
    });
  }

  ngOnInit(): void {
    // "arraybuffer" | "blob" | "text" | "json"
    const wb = new Excel.Workbook();
    const reader = new FileReader();

    this.http.get('assets/demo.xlsx', { responseType: 'blob' }).subscribe(
      (data) => {
        console.log(data);
        //  saveAs(data,"nameFile"+".xlsx");

        wb.xlsx.load(data).then((workbook) => {
          console.log(workbook, 'workbook instance');
          workbook.eachSheet((worksheet, id) => {
            worksheet.eachRow((row, rowIndex) => {
              console.log(row.values, rowIndex);
            });
            // Add an array of rows
            const rows = [
              [5, 'Bob', new Date().getTime()], // row by array
              [5, 'Bob', new Date().getTime()],
            ];
            // add new rows and return them as array of row objects
            const newRows = worksheet.addRows(rows);

            console.log(worksheet);

            worksheet.eachRow((row, rowIndex) => {
              console.log(row.values, rowIndex);
            });

          });

          workbook.xlsx.writeBuffer().then((dataBuffter) => {
            console.log(dataBuffter);

            let blob = new Blob([dataBuffter], {
              type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
            });
            fs.saveAs(blob, 'CarData.xlsx');
          });
        });

        // fs.saveAs(data, 'CarData.xlsx');
      },
      (error) => {
        console.log(error);
      }
    );
  }
}