首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在nodejs中上传和读取excel文件?

如何在nodejs中上传和读取excel文件?
EN

Stack Overflow用户
提问于 2022-01-03 06:44:51
回答 2查看 5.8K关注 0票数 2

我想要构建一个API "/upload/ excel“,允许用户导入excel文件,在收到excel文件后,它将读取其字段并将其保存到数据库中。

如何做到这一点?

EN

回答 2

Stack Overflow用户

发布于 2022-06-02 15:33:19

我使用multer上传文件,并使用xlsx处理它,并使用mongodb作为数据库(模型为mongoose):

Lead是数据模型,您必须添加Excel列名。有关更多信息,请参见猫鼬文档。

代码语言:javascript
运行
复制
const express = require("express");
const multer = require("multer");
const connectDB = require("./config/db");
const Lead = require("./models/Lead");

connectDB();

const uploadXLSX = async (req, res, next) => {
  try {
    let path = req.file.path;
    var workbook = XLSX.readFile(path);
    var sheet_name_list = workbook.SheetNames;
    let jsonData = XLSX.utils.sheet_to_json(
      workbook.Sheets[sheet_name_list[0]]
    );
    if (jsonData.length === 0) {
      return res.status(400).json({
        success: false,
        message: "xml sheet has no data",
      });
    }
    let savedData = await Lead.create(jsonData);

    return res.status(201).json({
      success: true,
      message: savedData.length + " rows added to the database",
    });
  } catch (err) {
    return res.status(500).json({ success: false, message: err.message });
  }
};

var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, "uploads");
  },
  filename: function (req, file, cb) {
    cb(null, Date.now() + "-" + file.originalname);
  },
});

const upload = multer({ storage: storage });

app.post("/upload", upload.single("xlsx"), uploadXLSX);

const port = process.env.PORT || 5000;

const server = app.listen(port, () => {
  console.log("app running on port", port);
});

因此,从这里开始,当您与邮递员打电话到localhost:5000/upload时,请看下面的图片

票数 2
EN

Stack Overflow用户

发布于 2022-01-03 06:58:44

你可以通过穆特上传一个文件,也可以通过强大的

https://www.npmjs.com/package/multer

https://www.npmjs.com/package/formidable

您可以通过以下任何一个npm包读取xl文件

https://www.npmjs.com/package/xlsx

https://www.npmjs.com/package/read-excel-file

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

https://stackoverflow.com/questions/70562438

复制
相关文章

相似问题

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