使用 ExcelJS,如何使用 URL 从 excel 文件中读取数据?
Using ExcelJS, how to read data from excel file using URL?
我有 excel 文件上传到云端。当前端通过 URL 时使用节点 js 我需要从 excel 文件中读取数据。下面是我的代码,
var workbook = new ExcelJS.Workbook();
workbook.xlsx.load('https://file-examples.com/wp-content/uploads/2017/02/file_example_XLSX_10.xlsx')
.then(function() {
var worksheet = workbook.getWorksheet(sheet);
worksheet.eachRow({ includeEmpty: true }, function(row, rowNumber) {
console.log("Row " + rowNumber + " = " + JSON.stringify(row.values));
});
});
但是我遇到了这个错误,
找不到中央目录的结尾:这是一个 zip 文件吗?如果是,请参阅 https://stuk.github.io/jszip/documentation/howto/read_zip.html
有人可以帮我解决这个问题吗?
load
方法需要您传递包含 Excel 数据的缓冲区。
您正在向它传递一个字符串,该字符串包含 URL,而不是 Excel 数据。
您需要fetch the data and convert it to a buffer。
使用以下代码修复。
const axios = require("axios");
const XLSX = require("xlsx");
const jsontoxml = require("jsontoxml");
async function testAxiosXlsx(url) {
const options = {
url,
responseType: "arraybuffer"
}
let axiosResponse = await axios(options);
const workbook = XLSX.read(axiosResponse.data);
let worksheets = workbook.SheetNames.map(sheetName => {
return { sheetName, data: XLSX.utils.sheet_to_json(workbook.Sheets[sheetName]) };
});
console.log("json:\n", JSON.stringify(worksheets), "\n\n");
console.log("xml:\n", jsontoxml(worksheets, {}));
}
testAxiosXlsx("https://file-examples.com/wp-content/uploads/2017/02/file_example_XLSX_10.xlsx");
我有 excel 文件上传到云端。当前端通过 URL 时使用节点 js 我需要从 excel 文件中读取数据。下面是我的代码,
var workbook = new ExcelJS.Workbook();
workbook.xlsx.load('https://file-examples.com/wp-content/uploads/2017/02/file_example_XLSX_10.xlsx')
.then(function() {
var worksheet = workbook.getWorksheet(sheet);
worksheet.eachRow({ includeEmpty: true }, function(row, rowNumber) {
console.log("Row " + rowNumber + " = " + JSON.stringify(row.values));
});
});
但是我遇到了这个错误,
找不到中央目录的结尾:这是一个 zip 文件吗?如果是,请参阅 https://stuk.github.io/jszip/documentation/howto/read_zip.html
有人可以帮我解决这个问题吗?
load
方法需要您传递包含 Excel 数据的缓冲区。
您正在向它传递一个字符串,该字符串包含 URL,而不是 Excel 数据。
您需要fetch the data and convert it to a buffer。
使用以下代码修复。
const axios = require("axios");
const XLSX = require("xlsx");
const jsontoxml = require("jsontoxml");
async function testAxiosXlsx(url) {
const options = {
url,
responseType: "arraybuffer"
}
let axiosResponse = await axios(options);
const workbook = XLSX.read(axiosResponse.data);
let worksheets = workbook.SheetNames.map(sheetName => {
return { sheetName, data: XLSX.utils.sheet_to_json(workbook.Sheets[sheetName]) };
});
console.log("json:\n", JSON.stringify(worksheets), "\n\n");
console.log("xml:\n", jsontoxml(worksheets, {}));
}
testAxiosXlsx("https://file-examples.com/wp-content/uploads/2017/02/file_example_XLSX_10.xlsx");