alasql需要已包含的xlsx

时间:2018-03-06 14:18:07

标签: excel xlsx alasql js-xlsx

我正在尝试使用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。

1 个答案:

答案 0 :(得分:0)

从alasql中读取代码后,我发现:

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');

对我有用