首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >alasql需要xlsx,而xlsx已经包含在

alasql需要xlsx,而xlsx已经包含在
EN

Stack Overflow用户
提问于 2018-03-06 14:18:06
回答 1查看 1.9K关注 0票数 3

我试图使用alasqlxlsx将数据导出到excel表中。我遵循了这里的所有指南:https://github.com/agershun/alasql/wiki/Xlsx

这是我的职责:

代码语言:javascript
复制
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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-26 11:37:35

在阅读了alasql的源代码之后,我仔细研究了获取XLSX的部分:

代码语言:javascript
复制
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

代码语言:javascript
复制
import * as alasql from 'alasql';
alasql["private"].externalXlsxLib = require('xlsx');

更新

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

代码语言:javascript
复制
import * as alasql from 'alasql';
var XLSX = require('xlsx')
alasql.setXLSX(XLSX);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49132971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档