怎么使用Java+EasyExcel实现文件上传功能

发布时间:2023-02-24 15:42:42 作者:iii
来源:亿速云 阅读:197

怎么使用Java+EasyExcel实现文件上传功能

目录

  1. 引言
  2. 环境准备
  3. 项目结构
  4. 依赖配置
  5. 前端页面
  6. 后端实现
    1. 文件上传接口
    2. Excel数据解析
    3. 数据存储
  7. 测试与验证
  8. 总结

引言

在现代Web应用中,文件上传功能是一个非常常见的需求。特别是在处理Excel文件时,如何高效地解析和存储数据是一个关键问题。本文将详细介绍如何使用Java和EasyExcel库来实现文件上传功能,并解析Excel文件中的数据。

环境准备

在开始之前,确保你已经安装了以下工具和库:

项目结构

我们将创建一个简单的Spring Boot项目,项目结构如下:

src/main/java
└── com
    └── example
        └── upload
            ├── controller
            │   └── UploadController.java
            ├── entity
            │   └── User.java
            ├── repository
            │   └── UserRepository.java
            ├── service
            │   └── UploadService.java
            └── UploadApplication.java
src/main/resources
└── application.properties
src/main/webapp
└── WEB-INF
    └── views
        └── upload.jsp
pom.xml

依赖配置

pom.xml中添加以下依赖:

<dependencies>
    <!-- Spring Boot Starter Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Spring Boot Starter Data JPA -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <!-- MySQL Connector -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>

    <!-- EasyExcel -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>easyexcel</artifactId>
        <version>2.2.6</version>
    </dependency>

    <!-- Spring Boot Starter Thymeleaf -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
</dependencies>

前端页面

src/main/webapp/WEB-INF/views/upload.jsp中创建一个简单的文件上传表单:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传</title>
</head>
<body>
    <h1>文件上传</h1>
    <form action="/upload" method="post" enctype="multipart/form-data">
        <input type="file" name="file" />
        <input type="submit" value="上传" />
    </form>
</body>
</html>

后端实现

文件上传接口

UploadController.java中创建一个文件上传接口:

package com.example.upload.controller;

import com.example.upload.service.UploadService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

@Controller
public class UploadController {

    @Autowired
    private UploadService uploadService;

    @PostMapping("/upload")
    public String uploadFile(@RequestParam("file") MultipartFile file) {
        if (file.isEmpty()) {
            return "redirect:/upload?error=文件为空";
        }
        uploadService.upload(file);
        return "redirect:/upload?success=文件上传成功";
    }
}

Excel数据解析

UploadService.java中实现Excel数据解析:

package com.example.upload.service;

import com.alibaba.excel.EasyExcel;
import com.example.upload.entity.User;
import com.example.upload.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

@Service
public class UploadService {

    @Autowired
    private UserRepository userRepository;

    public void upload(MultipartFile file) {
        try {
            List<User> users = EasyExcel.read(file.getInputStream())
                    .head(User.class)
                    .sheet()
                    .doReadSync();
            userRepository.saveAll(users);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

数据存储

User.java中定义实体类:

package com.example.upload.entity;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private Integer age;

    // Getters and Setters
}

UserRepository.java中定义仓库接口:

package com.example.upload.repository;

import com.example.upload.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
}

测试与验证

  1. 启动Spring Boot应用。
  2. 访问http://localhost:8080/upload,上传一个Excel文件。
  3. 检查数据库中的数据是否成功插入。

总结

通过本文的介绍,我们学习了如何使用Java和EasyExcel库实现文件上传功能,并解析Excel文件中的数据。这种方法不仅简单易用,而且性能高效,非常适合处理大量数据的场景。希望本文对你有所帮助!

推荐阅读:
  1. java接口组成更新怎么实现
  2. Java怎么利用Socket和IO流实现文件的上传与下载

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java easyexcel

上一篇:go time.After性能怎么优化

下一篇:Spring注解@Import怎么使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》