SpringMVC上传和解析Excel方法

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

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

目录

  • 前置条件
  • 步骤一:添加依赖
  • 步骤二:编写上传页面
  • 步骤三:编写Controller接收上传文件
  • 步骤四:编写Excel解析方法
  • 示例一:上传并解析Excel文件
  • 示例二:将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方法

基础教程推荐