我想要构建一个API "/upload/ excel“,允许用户导入excel文件,在收到excel文件后,它将读取其字段并将其保存到数据库中。
如何做到这一点?
发布于 2022-06-02 15:33:19
我使用multer上传文件,并使用xlsx处理它,并使用mongodb作为数据库(模型为mongoose):
Lead
是数据模型,您必须添加Excel列名。有关更多信息,请参见猫鼬文档。
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
时,请看下面的图片
发布于 2022-01-03 06:58:44
你可以通过穆特上传一个文件,也可以通过强大的
https://www.npmjs.com/package/multer
https://www.npmjs.com/package/formidable
您可以通过以下任何一个npm包读取xl文件
https://stackoverflow.com/questions/70562438
复制相似问题