Угловой 7: xlsx_styles__WEBPACK_IMPORTED_MODULE_2 __. Utils.json_to_sheet не является функцией - PullRequest
0 голосов
/ 20 сентября 2019

Прежде чем я пытаюсь экспортировать Excel, используя xlxs-стили, после установки npm и ng serve я получил сообщение об ошибке:

WARNING in ./node_modules/xlsx-styles/xlsx.js
Module not found: Error: Can't resolve 'crypto' in 'C:\Users\hansen\Documents\asg_tax_webclient\node_modules\xlsx-styles'

ERROR in ./node_modules/xlsx-styles/dist/cpexcel.js
Module not found: Error: Can't resolve './cptable' in 'xxx\node_modules\xlsx-styles\dist'
ERROR in ./node_modules/xlsx-styles/xlsx.js
Module not found: Error: Can't resolve 'fs' in 'xxx\node_modules\xlsx-styles'
ERROR in ./node_modules/xlsx-styles/ods.js
Module not found: Error: Can't resolve 'fs' in 'xxx\node_modules\xlsx-styles'

Поэтому я пытаюсь найти решение, и я нашел, а затем попробовал решениездесь https://github.com/SheetJS/js-xlsx/issues/285,

Основываясь на этом решении, я создаю веб-пакет с учебником из этого источника: http://opensourceforgeeks.blogspot.com/2018/12/how-to-customize-build-configuration.html:

module.exports = {
    module: {
      rules: [
         {
        //   test: /\.example$/,
        //   use: ["example-loader"],
        //   include: path.resolve(__dirname, "./")


        },
        //test on angular.json
        {
          "options": {
            "scripts": [
              "node_modules/chart.js/dist/Chart.min.js"
            ],
            "styles": [
              {
                "input": "node_modules/@progress/kendo-theme-default/dist/all.css"
              },
              "node_modules/flag-icon-css/css/flag-icon.css",
              "node_modules/font-awesome/css/font-awesome.css",
              "node_modules/simple-line-icons/css/simple-line-icons.css",
              "src/scss/style.scss",
              "node_modules/ngx-toastr/toastr.css"
            ],
          }
        },
      ]
    },
    node: {
        fs: 'empty'
    },
    externals: [
      {
        './cptable': 'var cptable',
      }
    ],

  };

После этого все в порядке, когда яng serve.

Но когда я пытаюсь экспортировать данные в excel, я снова получаю сообщение об ошибке в консоли:

ERROR TypeError: xlsx_styles__WEBPACK_IMPORTED_MODULE_2__.utils.json_to_sheet is not a function
    at 

Вот мой код импорта и метод написания Excel:

import {WorkSheet as XLSXWorkSheet, utils as XLSXUtils, WorkBook as XLSXWorkBook, write as StyleWrite, utils as StyleUtils, CellObject as StyleCellObject} from 'xlsx-styles';
import {ExcelConfig} from "../constants/excel.config";
import {DOCUMENT} from '@angular/common';
import * as FileSaver from 'file-saver';
import * as XLSX from 'xlsx';

public exportAsExcelFileWithStyle(json: any[], excelFileName: string): void {
    console.log(json,excelFileName);
    this.worksheet = XLSXUtils.json_to_sheet(json, {header: [], skipHeader:true});

    const workbook: XLSXWorkBook = { Sheets: { 'data': this.worksheet }, SheetNames: ['data'] };
    const excelBuffer: any =  StyleWrite(workbook,
      { bookType: 'xlsx', type: 'buffer', cellDates: true, cellStyles: true});

    this.openExcelFile(excelBuffer, excelFileName);

    //this.saveAsExcelFile(excelBuffer, excelFileName);
  }

Я что-то забыл?Буду рад любой помощи.

...