前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第160期:express上传excel 文件

第160期:express上传excel 文件

作者头像
terrence386
发布2023-09-06 10:25:52
2770
发布2023-09-06 10:25:52
举报

封面图

image.png

旧工厂改造的园区中的旧设备

背景

近期有人给我提了个简单的需求,上传一个excel表格。于是简单的用 express实现了一下这个功能的基本代码。

通常情况下上传表格的基本逻辑是:先上传文件,然后遍历表格文件中的数据插入到数据库中。

我这里简单的实现了上传的功能,主要用到了两个npm的包:

  1. multer
  2. xlsx

Multer是一个node.js中间件,用于处理多部分/表单数据,主要用于上传文件。

xlsx 是SheetJS社区版提供久经考验的开源解决方案,可以从几乎任何复杂的电子表格中提取有用的数据,并生成新的电子表格,这些电子表格可以与传统和现代软件一起使用。

我这里的场景主要是要上传表格,所以用了xlsx,如果你需要上传图片或者其他的内容,你可以将图片转为base64字符串,或者如果你有云存储空间的话,可以存到云存储上。

实现

具体的实现过程也非常简单:

  1. 先在express的路由中增加file.js模块:
代码语言:javascript
复制
var express = require('express');
var router = express.Router();
const fileModule = require('../modules/file')
const multer = require('multer')
const upload = multer()

/* uploadExcel */
router.post('/uploadExcel', upload.single('file'), function (req, res, next) {
    fileModule.uploadExcel(req, res)
});


module.exports = router;
  1. 然后去实现fileModule中的uploadExcel即可
代码语言:javascript
复制
var xlsx = require("xlsx");

module.exports = {
  uploadExcel(req, res) {
    console.log('req.file---->', req.file)
    // console.log('req, res', res)
    let data = {
      code: 200,
      msg: 'success'
    }
    // 解析excel文件
    const workbook = xlsx.read(req.file.buffer, {
      type: "buffer"
    })
    const sheet = workbook.Sheets[workbook.SheetNames[0]] // 选择第一个工作簿
    const result = xlsx.utils.sheet_to_json(sheet)
    console.log('result', result)

  }
}

uploadExcel的响应参数中,我们可以获取到具体的文件对象,以及它内部的buffer数据,然后通过xlsx作进一步的转化,得到我们想要的数据。

  1. 然后我们就可以使用mysql等数据库相关的内容,将这些数据插入到数据库中:
代码语言:javascript
复制
var mysql = require('mysql')
const pool = mysql.createPool(config.mysql);
pool.on('connection', (connnection) => {
  connnection.query('SET SESSION auto_increment_increment=1')
})

pool.getConnection((err, conn) => {
      if (err) {
        data.code = 401;
        data.msg = '连接错误';
        res.send(data);
        return;
      }
      // 插入操作
      
      // 连接不需要使用时,使用该方法将其归还到连接池中
      conn.release();
 })

最后

以上就是express 上传excel文件的基本过程。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JavaScript高级程序设计 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 封面图
  • 背景
  • 实现
  • 最后
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档