alasql 需要已经包含的 xlsx
alasql requires xlsx which is already included
我正在尝试使用 alasql
和 xlsx
将数据导出到 excel sheet。我已遵循此处的所有准则: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。
阅读 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);
我正在尝试使用 alasql
和 xlsx
将数据导出到 excel sheet。我已遵循此处的所有准则: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。
阅读 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);