【问题标题】:alasql requires xlsx which is already includedalasql 需要已经包含的 xlsx
【发布时间】:2018-08-14 10:29:20
【问题描述】:

我正在尝试使用 alasqlxlsx 将数据导出到 Excel 工作表。我已遵循此处的所有准则: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。

【问题讨论】:

    标签: excel xlsx alasql js-xlsx


    【解决方案1】:

    在阅读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);
    

    【讨论】:

    • 你应该更喜欢使用现有的 setter alasql.setXLSX(XLSX)
    • 我已经很久没有研究这个了。根据您的解释,我认为您可能是对的。我会将您的答案设置为正确,直到/除非有人提出一些好的观点,为什么不呢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 2016-11-10
    • 2018-03-28
    • 1970-01-01
    相关资源
    最近更新 更多