node.js - 如何在nodejs中上传和读取excel文件?

标签 node.js mongodb

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

如何实现这一目标?

最佳答案

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

Lead 是数据模型,您必须添加 Excel 工作表列名称。请参阅 mongoose 文档以获取更多信息

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);
});

因此,当您使用 postman 调用 localhost:5000/upload 时,请参见下图

enter image description here

关于node.js - 如何在nodejs中上传和读取excel文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70562438/

相关文章:

mongodb - 如何将数据导入到部署的 meteor 应用程序中?

javascript - Cosmos DB Mongo API 如何管理 "Request Rate is Large"条件

node.js - 如何使用 nvm 安装 Node 9?

node.js - 通过 Node.Js 生成的管道 Amazon S3 下载流导致下载不完整

node.js - 我无法使用 ejs 渲染我的模板 css

linux - 无法连接到远程 mongodb 服务器

java - 瑞士电信应用云 : nodejs with java jdk

javascript `require` 而不是 Node.js 中的 Three.js 文件中的 html `script`

python - 按日期和时间查询存储在 MongoDB 中的数据

javascript - Mongoose 使用另一个字段(即数组)的项目更新字段