SpringMVC上传和解析Excel方法

下面是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日

相关文章

  • 微信小程序 支付功能开发错误总结

    微信小程序支付功能开发错误总结 一、前言 微信小程序作为一种移动应用的新型形态,为移动应用的开发和使用带来了新的体验和便利。而小程序的支付功能则是小程序中常见的功能,实现小程序支付虽然不难,但其过程中也存在一些易犯的错误。本文将总结微信小程序支付功能开发的常见错误和解决方案,帮助开发者更好地开发和实现小程序中的支付功能。 二、微信小程序支付功能开发错误总结 …

    Java 2023年5月23日
    00
  • java中Map、Set、List的简单使用教程(快速入门)

    下面我将为您详细讲解Java中Map、Set、List的简单使用教程(快速入门)。 Map 什么是Map Map是Java中的一种数据结构,用于存储键值对,可理解为字典或者关联数组。在Map中,每个键只能出现一次,且每个键都对应着唯一的值。 如何使用Map 在Java中,使用Map需要先引入java.util包。创建一个Map变量时,我们需要指定映射键和映射…

    Java 2023年5月26日
    00
  • SpringBoot Data JPA 关联表查询的方法

    当我们需要在开发过程中对多个表进行查询时,可以使用Spring Boot Data JPA中提供的关联查询方法,通过设置实体类之间的关系来方便地进行多表查询。下面是关于SpringBoot Data JPA关联表查询的详细攻略。 1. 设置实体类之间的关系 为了进行多表查询,我们需要设置实体类之间的关系。假设我们有两个实体类:Order和User,其中Ord…

    Java 2023年5月20日
    00
  • JSP教程(一)

    下面是“JSP教程(一)”的完整攻略。 标题 在文档开头加入标题,以便读者能够了解该文档的内容。 # JSP教程(一) 简介 在简短的几句话中介绍文档的内容和目标用户。 本文档将介绍什么是JSP,以及JSP的结构和基本语法。本文适合那些对Java Web开发有基本了解的读者阅读。 什么是JSP? JSP(Java Server Pages)是一种Java技术…

    Java 2023年6月15日
    00
  • Java远程调用Shell脚本并获取输出信息【推荐】

    Java远程调用Shell脚本并获取输出信息【推荐】 本文介绍如何使用Java远程调用Linux服务器上的Shell脚本,并获取执行的输出信息。本文介绍两种方法实现该功能:使用JSch库和使用ProcessBuilder类。以下是具体步骤: 准备工作 在开始之前,你需要了解以下知识点: SSH:Secure Shell,即加密的远程登录协议。 SSH公钥认证…

    Java 2023年5月26日
    00
  • Java中将String类型依照某个字符分割成数组的方法

    Java 中将 String 类型按照某个字符分割成数组的方法比较简单,主要通过 String 类中的 split() 方法实现。下面是详细的攻略: 1. String 类中的 split() 方法 split() 方法能够将 String 类型的字符串根据指定字符进行拆分成一个数组,具体语法如下: public String[] split(String …

    Java 2023年5月27日
    00
  • Java如何读写Properties配置文件(Properties类)

    下面我将详细讲解“Java如何读写Properties配置文件(Properties类)”的完整攻略。 什么是Properties配置文件 Properties文件是Java中一种非常常用的配置文件格式,它采用Key-Value的形式存储数据,是一种轻量级的配置文件。Properties文件一般用于存储应用程序配置信息,如数据库连接信息、系统配置信息等。 P…

    Java 2023年6月15日
    00
  • 微信小程序实现获取小程序码和二维码java接口开发

    下面是详细讲解“微信小程序实现获取小程序码和二维码java接口开发”的完整攻略。 一、获取小程序码和二维码的区别 在实现获取小程序码和二维码之前,需要了解它们之间的区别。小程序码和二维码都可以用于扫描获取小程序的功能,但它们实现方式和使用场景不同。 小程序码是通过微信提供的wxacode.get接口获取,可以包含小程序的路径、场景值等信息,并且是动态生成的,…

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