gpt4 book ai didi

javascript - 如何使用来自外部链接 (Amazon S3) 的 SheetJS 解析 Excel 文件

转载 作者:数据小太阳 更新时间:2023-10-29 05:21:52 27 4
gpt4 key购买 nike

我正在尝试解析我已有 URL 的 excel 文件。尝试访问文件以使其可读时,我不断收到不同的错误。现在,这是我的代码:

  const input_file = doc.input_file;
const extension = input_file.split('.').pop();



let XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
let oReq = new XMLHttpRequest();
oReq.open("GET", input_file, true);
oReq.responseType = "arraybuffer";

oReq.onload = function(e) {
let arraybuffer = oReq.responseText;
/* convert data to binary string */
let data = new Uint8Array(arraybuffer);
let arr = new Array();
for(let i = 0; i != data.length; ++i) arr[i] = String.fromCharCode(data[i]);
let bstr = arr.join("");

/* Call XLSX */
let workbook = XLSX.read(bstr, {type:"binary"});

/* DO SOMETHING WITH workbook HERE */
let firstSheet = workbook.SheetNames[0];
let parsed = XLSX.utils.sheet_to_csv(firstSheet);
console.log(parsed);
}

oReq.send();

我得到的当前错误是:Error: Unsupported file NaN at the when I try to read the file at: let workbook = XLSX.read(bstr, {type:"二进制"});

我不确定阅读该外部链接的最简单方法。有任何想法吗?如果有帮助,我正在使用 Meteor。

最佳答案

这是一个久经考验的答案。

您的代码有两个问题:

  1. 对于二进制文件,应该是let arraybuffer = oReq.response;,而不是let arraybuffer = oReq.responseText;

  2. 您应该在您的 Amazon S3 实例上启用跨源资源共享。只需关注 official tutorial here.

这是一个工作代码笔:

http://codepen.io/KevinWang15/pen/GZXJKj

你在使用 nodeJS 吗?

注意:上面的代码只是使用了网络浏览器(chrome)的 XMLHttpRequest,我注意到你正在使用

XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest

您使用的是 nodejs 之类的东西吗? (对不起,我对 Meteor 不熟悉)

更具体地说,您使用的是 drivedan/node-XMLHttpRequest 吗?

我对它和您的代码进行了试验,它导致了完全相同的错误消息。我想是因为这个 XMLHttpRequestoReq.responseoReq.responseText

仍然存在兼容性问题

如果你使用的是nodeJS,我推荐另一个库:ykzts/node-xmlhttprequest

安装它

npm i w3c-xmlhttprequest

将您的 XMLHttpRequest 更改为

let XMLHttpRequest = require('w3c-xmlhttprequest').XMLHttpRequest;

它立即解决了问题!

关于javascript - 如何使用来自外部链接 (Amazon S3) 的 SheetJS 解析 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36586001/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com