返回

Node.js + Express + MySQL:Excel 文件上传解析与数据存储指南

后端

Node.js + Express + MySQL 简介

在开始之前,让我们快速回顾一下 Node.js、Express 和 MySQL:

  • Node.js: 一种跨平台的 JavaScript 运行时环境,允许您使用 JavaScript 编写服务器端应用程序。
  • Express: 一个基于 Node.js 的轻量级 Web 框架,可以轻松地构建 RESTful API 和 Web 应用程序。
  • MySQL: 一个开源的关系型数据库管理系统,以其可靠性、可扩展性和易用性而闻名。

我们将使用这些技术来构建一个能够上传 Excel 文件、解析文件中的数据并将其存储到 MySQL 数据库的系统。

项目搭建

首先,我们需要创建一个新的 Node.js 项目:

mkdir excel-upload-nodejs
cd excel-upload-nodejs
npm init -y

然后,我们需要安装必要的依赖项:

npm install express mysql2 multer body-parser
  • express:Express 框架
  • mysql2:MySQL 客户端
  • multer:文件上传中间件
  • body-parser:解析请求主体中间件

配置 Express 和 Multer

接下来,我们需要在项目中配置 Express 和 Multer:

const express = require('express');
const app = express();
const multer = require('multer');

// 配置 Multer 的存储配置
const storage = multer.diskStorage({
  destination: './uploads/',
  filename: (req, file, cb) => {
    cb(null, Date.now() + '-' + file.originalname);
  }
});

// 配置 Multer 的上传中间件
const upload = multer({ storage: storage });

// 配置 Express 的中间件
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(multer().single('excelFile'));

// 启动 Express 服务
app.listen(3000, () => {
  console.log('Server listening on port 3000');
});
  • 我们首先引入必要的模块,并创建一个新的 Express 应用程序。
  • 接下来,我们配置 Multer 的存储配置,指定上传文件的存储位置和命名规则。
  • 然后,我们配置 Multer 的上传中间件,并将其注册到 Express 应用程序中。
  • 最后,我们配置 Express 的中间件,并启动服务器。

处理 Excel 文件上传

现在,我们需要添加一个路由来处理 Excel 文件上传:

// 路由:处理 Excel 文件上传
app.post('/upload', upload.single('excelFile'), async (req, res) => {
  // 检查文件是否已上传
  if (!req.file) {
    return res.status(400).json({ error: 'No file uploaded' });
  }

  // 解析 Excel 文件
  const excelToJson = require('convert-excel-to-json');
  const result = excelToJson({
    sourceFile: req.file.path
  });

  // 将解析后的数据存储到数据库
  const mysql = require('mysql2');
  const connection = mysql.createConnection({
    host: 'localhost',
    user: 'username',
    password: 'password',
    database: 'database_name'
  });

  connection.connect();

  // 遍历解析后的数据并将其存储到数据库
  for (const row of result.Sheet1) {
    const sql = 'INSERT INTO table_name (column1, column2, column3) VALUES (?, ?, ?)';
    const values = [row.column1, row.column2, row.column3];

    connection.query(sql, values, (err, result) => {
      if (err) {
        console.log(err);
      } else {
        console.log('Data inserted successfully');
      }
    });
  }

  connection.end();

  // 向客户端返回成功响应
  res.status(200).json({ message: 'File uploaded successfully' });
});
  • 在这个路由中,我们首先检查文件是否已上传。如果未上传,则返回错误响应。
  • 然后,我们使用 convert-excel-to-json 库解析 Excel 文件。
  • 接下来,我们使用 mysql2 库连接到 MySQL 数据库,并遍历解析后的数据,将其存储到数据库中。
  • 最后,我们向客户端返回成功响应。

运行应用程序

现在,我们可以运行应用程序了:

npm start

然后,您可以使用 Postman 或其他 HTTP 请求工具测试上传 Excel 文件的功能。只需发送一个 POST 请求到 /upload 路由,并附上一个 Excel 文件即可。

结论

通过本指南,您已经了解了如何使用 Node.js、Express 和 MySQL 来实现 Excel 文件上传、解析和数据存储的功能。您可以将这些知识应用到自己的项目中,或者作为进一步学习的基础。