首页 > 解决方案 > 升级到 Angular 10 会破坏 ExcelJs

问题描述

我刚刚使用 ng update 将我的应用程序从 9 的最新版本升级到 angular 10。我知道有重大变化,并且在大多数情况下它已经升级得很好,但是我目前从 exceljs 收到一个错误:

"export 'Workbook' (imported as 'Excel') was not found in 'exceljs/dist/exceljs'

在升级之前,它使用的是 exceljs 版本 2.0.1。现在它使用的是 exceljs 4.0.1。(它是最新版本之前的一个版本,因为由于选项参数被标记为必需,导致在最新版本中编译时出现错误。这应该没关系。)

导入语句如下:

import * as Excel from "exceljs/dist/exceljs";

代码本身对于 exceljs 来说非常典型。我有一个提供数据的服务:HttpResponse 并将其加载到工作簿中,以便我可以提取一些列。

this.myService.getMySpreadsheet().subscribe((data: HttpResponse<Blob>) => {
      new Response(data.body).arrayBuffer().then(arrayBuffer => {
        const wb: Excel.Workbook = new Excel.Workbook();
        wb.xlsx.load(arrayBuffer).then(() => {

          const ws1 = wb.getWorksheet("My Worksheet");

但它现在甚至无法访问该代码,因为角度编译已损坏。

知道如何解决这个问题吗?我需要添加某种向后兼容性标志吗?

标签: angularexceljs

解决方案


我开始exceljs使用agnular 10以下tsconfig.app.json设置,请注意-下的pathstypes属性compilerOptions

{
  "extends": "./tsconfig.base.json",
  "compilerOptions": {
    "outDir": "./out-tsc/app",
    "paths": {
     "exceljs": [
       "node_modules/exceljs/dist/exceljs.min"
     ]
   },
    "types": ["node"],
  },
  "files": [
    "src/main.ts",
    "src/polyfills.ts"
  ],
  "include": [
    "src/**/*.d.ts"
  ]
}

然后您可以导入Workbook并创建如下工作表 -

import { Workbook } from 'exceljs';
....
let workbook = new Workbook();
let worksheet = workbook.addWorksheet('Sample sheet');

请在此处查看工作示例应用程序


推荐阅读