首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用sheetJS和node读取上传文件的工作表数据?

如何使用sheetJS和node读取上传文件的工作表数据?
EN

Stack Overflow用户
提问于 2020-10-13 20:31:39
回答 1查看 1.2K关注 0票数 0

因此,上传的文件是sheetJS需要读取的excel文件,否则将显示为{}。

代码语言:javascript
运行
复制
app.post('/sendExcel', function(req, res) {
    let data = req.body;
    var workbook = sheetJS.read(data, {type: 'buffer'});
    console.log(workbook.Sheets['Sheet1); //prints... "{ A1: { t: 's', v: '[object Object]' }, '!ref': 'A1' }"
    let excel = workbook.Sheets['Sheet1']['A1']['v'][0]; //prints... "["

所以我尝试了各种方法,包括更改客户端的类型,因为我在使用buffer类型时遇到了问题。所以现在它部分工作了,但是我仍然不能访问工作表中的数据。

作为示例,我在这里使用了文件路径,它显示为正常工作。

代码语言:javascript
运行
复制
app.get('/excel', function(err, res, data) {
    var wb = sheetJS.readFile("data.xlsx");
    let excel = wb.Sheets['Sheet1']['A1']['v'];
    console.log(excel); //this prints "vehicle", which is what is supposed to happen, not "[".
      res.send(excel)
});

我应该从表单上传中获得excel数据。这就是问题所在。当发送到数据库时,它现在是成功的,但不会访问整个数据。我想我需要把它改回数组。

您可以使用:

代码语言:javascript
运行
复制
var fileReader = new FileReader();
fileReader.readAsArrayBuffer(workbook);

但这不能在app.js中运行

这是我关于客户端和服务器端的另一个答案。这可能会对其他人有所帮助。

Javascript Read Excel file on server with SheetJS

EN

Stack Overflow用户

回答已采纳

发布于 2020-10-14 22:16:14

不要使用文件读取器。正常情况下将excel表格追加到正文中的表单中。

客户端:

代码语言:javascript
运行
复制
let excelInput = document.getElementById("fileToUpload"); 
//excelInput: this html element allows you to upload the excel sheet to it
let excelFile = excelInput.files[0];
  let form = new FormData();
  form.append("excel", excelFile);

  fetch('/sendExcel', {method: "POST", body: form})
  .then((data) => {
    console.log('Success:', data);
  })
  .catch((error) => {
    console.error('Error:', error);
  });

然后使用强大的服务器端。

服务器端:

代码语言:javascript
运行
复制
const sheetJS  = require('xlsx');
const formidable = require('formidable');
app.post('/excel', function(req, res) {
let data = req.body;
const form = formidable({ multiples: true });
  form.parse(req, (err, fields, files, next) => {
    if (err) {
      next(err);
      return;
    }

    var f = files[Object.keys(files)[0]];
    var workbook = sheetJS.readFile(f.path);
    res.send(workbook);

  });
});

所以必须使用formidable,否则它将无法工作。然后,您可以使用sheetJS.readFile而不是sheetJS.read。

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64335328

复制
相关文章

相似问题

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