代码之家  ›  专栏  ›  技术社区  ›  Nikola Luke

alasql需要xlsx,其中已包含xlsx

  •  3
  • Nikola Luke  · 技术社区  · 6 年前

    我正在尝试使用将数据导出到excel工作表 alasql xlsx 。我遵循了这里的所有指导原则: https://github.com/agershun/alasql/wiki/Xlsx

    这是我的职责:

    exportToExcel(data: any) {
       console.log(XLSX.version);
    
       alasql
         .promise('SELECT * INTO XLSX("test.csv",{headers:true}) FROM ?', [data])
         .then(function (data) { console.log(data); })
         .catch(function (err) { console.log('Error:', err); });;
    }
    

    这使我在控制台中出现此错误 XLSX 版本:

    VM9931 main.bundle.js:1044 0.12.4 VM9931 main.bundle.js:1047 Error: Error: Please include the xlsx.js library at B (VM9930 vendor.bundle.js:6298) at Object.A.into.XLSX (VM9930 vendor.bundle.js:6303)

    我遇到的问题是,我已经将 XLSX 库,并且它工作正常(记录的版本为 0.12.4 )。如果我更改 XLSX("test.csv")... CSV("test.csv")... 它完美地导出到CSV。

    1 回复  |  直到 6 年前
        1
  •  4
  •   Martin Choraine    4 年前

    从中读取源代码后 alasql ,我仔细看了一下 XLSX :

    var getXLSX = function() {
    var XLSX = alasql["private"].externalXlsxLib;
    
      if (XLSX) {
        return XLSX;
      }
    
      if (utils.isNode || utils.isBrowserify || utils.isMeteorServer) {
        /*not-for-browser/*
        XLSX = require('xlsx') || null;
        //*/
      } else {
        XLSX = utils.global.XLSX || null;
      }
    
      if (null === XLSX) {
        throw new Error('Please include the xlsx.js library');
      }
    
      return XLSX;
    
    };
    

    我不知道到底是什么原因 XLSX = require('xlsx') || null 已注释,因此需要显式设置 externalXlsxLib 使用 xlsx :

    import * as alasql from 'alasql';
    alasql["private"].externalXlsxLib = require('xlsx');
    

    使现代化

    正如注释中所建议的,现在有一个setter函数,可以用来提供 xlsx 。你绝对应该使用这种更干净的方法。

    import * as alasql from 'alasql';
    var XLSX = require('xlsx')
    alasql.setXLSX(XLSX);
    
    推荐文章