SpringMVC上传和解析Excel方法

yizhihongxing

下面是SpringMVC上传和解析Excel的攻略:

目录

前置条件

在开始编写代码前,确保已经满足以下条件:
- SpringMVC项目已经搭建完成。
- 已经熟悉SpringMVC的基本操作和配置。
- 已经安装好了POI依赖的JAR包。

步骤一:添加依赖

pom.xml文件中添加如下依赖:

<dependencies>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.17</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.17</version>
    </dependency>
</dependencies>

步骤二:编写上传页面

.jsp页面中编写用于上传文件的代码:

<form method="post" action="/upload" enctype="multipart/form-data">
    <input type="file" name="file"/>
    <input type="submit" value="上传"/>
</form>

步骤三:编写Controller接收上传文件

编写Controller用于接收上传的文件:

@Controller
public class UploadController {
    @RequestMapping(value = "/upload", method = RequestMethod.POST)
    public String upload(@RequestParam("file") MultipartFile file) {
        // 省略上传代码
        return "result";
    }
}

步骤四:编写Excel解析方法

编写用于解析Excel的方法:

public List<List<String>> readExcel(MultipartFile file) throws IOException {
    Workbook workbook = null;
    List<List<String>> result = new ArrayList<>();
    InputStream is = file.getInputStream();
    if (file.getOriginalFilename().endsWith("xlsx")) {
        workbook = new XSSFWorkbook(is);
    } else if (file.getOriginalFilename().endsWith("xls")) {
        workbook = new HSSFWorkbook(is);
    }
    Sheet sheet = workbook.getSheetAt(0);
    for (int i = 0; i <= sheet.getLastRowNum(); i++) {
        Row row = sheet.getRow(i);
        List<String> rowList = new ArrayList<>();
        for (int j = 0; j < row.getLastCellNum(); j++) {
            Cell cell = row.getCell(j);
            String value = "";
            if (cell != null) {
                if (cell.getCellTypeEnum() == CellType.NUMERIC) {
                    value = String.valueOf(cell.getNumericCellValue());
                } else {
                    value = cell.getStringCellValue();
                }
            }
            rowList.add(value);
        }
        result.add(rowList);
    }
    return result;
}

示例一:上传并解析Excel文件

在Controller中调用解析Excel的方法:

@Controller
public class UploadController {
    @Autowired
    private ExcelService excelService;
    @RequestMapping(value = "/upload", method = RequestMethod.POST)
    public String upload(@RequestParam("file") MultipartFile file) throws IOException {
        List<List<String>> result = excelService.readExcel(file);
        // 省略其他代码
        return "result";
    }
}

示例二:将Excel数据存储到数据库中

pom.xml文件中添加数据库依赖:

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>1.4.199</version>
    <scope>test</scope>
</dependency>

创建实体类和DAO:

@Data
public class Person {
    private String name;
    private int age;
}
@Repository
public class PersonDao {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    public int insert(Person person) {
        return jdbcTemplate.update("INSERT INTO person (name, age) VALUES (?, ?)",
                person.getName(), person.getAge());
    }
}

在Service中调用解析Excel和保存到数据库的方法:

@Service
public class ExcelService {
    @Autowired
    private PersonDao personDao;
    public void readAndInsert(MultipartFile file) throws IOException {
        List<List<String>> result = readExcel(file);
        for (List<String> row : result) {
            Person person = new Person();
            person.setName(row.get(0));
            person.setAge(Integer.parseInt(row.get(1)));
            personDao.insert(person);
        }
    }
}

在Controller中调用上传解析和插入数据库的方法:

@Controller
public class UploadController {
    @Autowired
    private ExcelService excelService;
    @RequestMapping(value = "/upload", method = RequestMethod.POST)
    public String upload(@RequestParam("file") MultipartFile file) throws IOException {
        excelService.readAndInsert(file);
        // 省略其他代码
        return "result";
    }
}

以上就是SpringMVC上传和解析Excel的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringMVC上传和解析Excel方法 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • 在Java8中如何避开空指针异常

    在Java8中,可以通过使用Optional类来避免空指针异常,Optional类是一个可以包含null或非null值的容器对象,在进行操作时可以先检查它是否为空,避免了程序出现NullPointerException异常的情况。下面我们来详细讲解如何使用Optional类避免空指针异常。 使用Optional类 创建Optional对象 可以使用ofNul…

    Java 2023年5月27日
    00
  • Jenkins+Docker持续集成的实现

    下面我将为你详细讲解“Jenkins+Docker持续集成的实现”的完整攻略。 一、什么是持续集成? 持续集成是一种软件开发实践模式,它可以让开发者可以更频繁地提交代码到代码仓库,并且可以自动化地运行代码构建、代码测试等流程,以使得整个软件开发的过程更加高效和可靠。其中的核心理念是“早期发现问题,早期修复问题”。 二、Jenkins是什么? Jenkins是…

    Java 2023年5月19日
    00
  • Java语言通过三种方法实现队列的示例代码

    下面是关于“Java语言通过三种方法实现队列”的详细攻略: 一、队列的定义 在计算机科学中,队列是一种特殊的线性数据结构,它只允许在一端进行插入操作,在另一端进行删除操作。在队列中,进行插入操作的一端被称为队尾,进行删除操作的一端被称为队头。 二、常见的队列实现方法 实现队列的方法有很多,其中比较常见的包括: 1、使用数组实现队列 使用数组来实现队列,可以通…

    Java 2023年5月18日
    00
  • Java多线程之条件对象Condition

    Java多线程中的条件对象Condition是在java.util.concurrent.locks包下的,它和synchronized关键字一样,可以协调线程的执行顺序和通信,不过其功能更为强大,可用于等待条件、通知单个线程和通知所有等待线程。 一、条件对象Condition的基本用法 1. 创建Condition对象 在使用Condition对象前,需要…

    Java 2023年5月19日
    00
  • Linux(CentOS7)安装Tomcat与设置Tomcat为开机启动项(tomcat8为例)

    以下是详细的攻略: Linux(CentOS7)安装Tomcat 首先,需要下载Tomcat安装包。可以去Tomcat官网下载最新版的二进制版本。在本次攻略中,我们将以tomcat8为例进行说明。 下载完成之后,将tomcat8安装包上传到CentOS系统上的指定路径,比如/usr/local/src/下。 接下来,按照以下步骤安装Tomcat: 第一步:解…

    Java 2023年5月19日
    00
  • bootstrap table支持高度百分比的实例代码

    请跟我一起来详细探讨一下 “Bootstrap Table 支持高度百分比的实例代码” 的完整攻略。 1. 准备工作 首先,我们需要在 html 文件中引入必要的 js 和 css 文件: <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/boot…

    Java 2023年5月23日
    00
  • C# 使用PrintDocument类打印标签的方法

    标题:C# 使用PrintDocument类打印标签的方法 概述 PrintDocument是C#中用于文档打印的类,我们可以使用它来打印标签。在使用PrintDocument类进行标签打印之前,必须先为打印过程编写事件处理程序。本文将会详细讲解C# 使用PrintDocument类打印标签的方法。 步骤 步骤1:设计标签 在设计标签时,需要确定标签的尺寸、…

    Java 2023年6月15日
    00
  • Java迭代器与Collection接口超详细讲解

    Java迭代器与Collection接口超详细讲解 什么是Java迭代器? Java中的迭代器是一种访问集合元素的方式,它提供了一种遍历集合的统一方法,可以不用关心底层集合的实现。迭代器可以依次访问集合中的每个元素,并且支持在遍历过程中进行元素的删除操作。 Java中的迭代器是通过java.util.Iterator接口实现的。Iterator接口实际上是一…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部