ExcelJS не работает в производстве в Angular 6

Экспорт ExcelJS не работает в производственной среде Angular 6, но отлично работает в среде разработки.

Я использую «exceljs»: «^ 1.13.0» с «файловой заставкой»: «^ 2.0.2». До сих пор я пытался обновить:

angular.json scripts with "node_modules/exceljs/dist/exceljs.min.js",

tsconfig.json with "paths": {"exceljs": ["node_modules/exceljs/dist/exceljs.min"].

Кроме того, я пробовал два разных набора импорта:

import * as Excel from 'exceljs/dist/exceljs.min.js';
import * as FileSaver from 'file-saver';

а также

import * as Excel from "exceljs/dist/exceljs.min.js";
import * as ExcelProper from "exceljs";
import * as FileSaver from 'file-saver';

Я также попытался добавить:

declare const ExcelJS: any;

Вот эксель-сервис.

import { Injectable } from '@angular/core';
import * as Excel from "exceljs/dist/exceljs.min.js";
import * as ExcelProper from "exceljs";
import * as FileSaver from 'file-saver';

const EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';
const EXCEL_EXTENSION = '.xlsx';

// declare const ExcelJS: any;

@Injectable({
  providedIn: 'root'
})
export class ExcelService {

    workbook: Excel.Workbook;
  worksheet: any;

  constructor() { }


  generateExcel() {

    // Create workbook and worksheet
    this.workbook = new Excel.Workbook();

    // Add a Worksheet
    this.worksheet = this.workbook.addWorksheet('File');


    //Add Test to cell A1
    this.worksheet.getCell('A1').value = 'TEST';

    // Generate Excel File
    this.workbook.xlsx.writeBuffer().then((data) => {
        console.log('buffer data', data);
        const blob = new Blob([data], {type: EXCEL_TYPE});
        console.log('blob', blob);
      FileSaver.saveAs(blob, 'quote.xlsx');
    });

  }

// конец класса }

Моим исключением является загрузка электронной таблицы в браузере после завершения метода в моей службе Excel в производстве, что выполняется в среде разработки.


person Steve Klock    schedule 11.07.2019    source источник


Ответы (3)


  • Импортируйте, как показано ниже, обратите внимание, что вы сделали его Excel вместо ExcelJS.

import * as ExcelJS from "exceljs/dist/exceljs.min.js";

  • Оставьте этот код declare const ExcelJS: any; как есть

  • Сохраните "node_modules/exceljs/dist/exceljs.min.js" в пути к скрипту файла angular.json.

  • Удалить импорт ExcelProper - не требуется
  • Где бы вы ни создавали WorkBook, используйте ExcelJS.Workbook() вместо Excel.Workbook().
person user3751824    schedule 05.08.2019
comment
Спасибо, мой друг. Великолепие из Бразилии - person Carlos Maia de Morais; 14.08.2019
comment
Круто, это помогло мне даже через год :D - person visrey; 20.04.2020

  • Последняя версия [email protected] (любая версия › 1.10.0) отлично работает в конфигурации development, но не работает в конфигурации production

  • Таким образом, понижение версии пакета 'exceljs' npm до [email protected] решит проблему.

  • Вот ссылка на проблему GitHub для справки: https://github.com/exceljs/exceljs/issues/871#issue-459504298

person Megh09    schedule 14.07.2020

  • Я получил эту проблему в Sharepoint-spfx.
  • Для решения используйте версию exceljs версии 4.0.1. с помощью npm установите [email protected].
person Kaushik    schedule 29.05.2021