使用Java实现表单数据的Excel导入与导出

1. 前言

在实际开发中,导入与导出Excel表单数据是一项重要功能,尤其是在对数据进行统计分析的时候,Excel是不可或缺的工具。因此,本文将介绍如何使用Java语言实现表单数据的Excel导入与导出。

2. 导入Excel数据

2.1 POI框架介绍

为了实现Excel数据的导入,我们采用了POI框架,POI是Apache下的一个开源项目,主要用于实现Microsoft Office文件解析与操作。

POI提供了Excel读写API,同时支持Excel 2003及之前版本(.xls格式)和Excel 2007及之后版本(.xlsx格式)。在使用POI的时候,需要引入poi.jar、poi-ooxml.jar、poi-ooxml-schemas.jar和xmlbeans.jar这几个依赖。

2.2 代码实现

下面是导入Excel数据的主要代码实现:

public List importExcel(MultipartFile file) throws Exception {

List studentList = new ArrayList<>(); // 保存解析出的学生列表

Workbook wb;

if (file.getOriginalFilename().endsWith("xlsx")) {

wb = new XSSFWorkbook(file.getInputStream());

} else {

wb = new HSSFWorkbook(file.getInputStream());

}

Sheet sheet = wb.getSheetAt(0); // 获取第一个工作表

for (int i = 1; i <= sheet.getLastRowNum(); i++) { // 遍历每一行

Row row = sheet.getRow(i);

if (row != null) {

String name = row.getCell(0).getStringCellValue();

String gender = row.getCell(1).getStringCellValue();

int age = (int) row.getCell(2).getNumericCellValue();

String phone = row.getCell(3).getStringCellValue();

Student student = new Student(name, gender, age, phone);

studentList.add(student); // 将解析出的信息添加到学生列表中

}

}

return studentList;

}

上述代码首先判断Excel文件的类型,然后根据不同的类型创建Workbook对象,接着获取第一个工作表并遍历每一行,解析出每个单元格的数据,最后将学生信息添加到学生列表中。

3. 导出Excel数据

3.1 EasyExcel框架介绍

为了实现Excel数据的导出,我们采用了EasyExcel框架,它是一个基于Java的POI封装工具,能够快速、简便地实现Excel读写操作。

EasyExcel支持Java对象直接映射excel、比jxl更快的读写速度、支持百万数据写入、支持读取百度文档等等。

在使用EasyExcel的时候,需要引入easyexcel.jar这个依赖。

3.2 代码实现

下面是导出Excel数据的主要代码实现:

public void exportExcel(HttpServletResponse response, List dataList) throws IOException {

response.setContentType("application/vnd.ms-excel");

response.setCharacterEncoding("utf-8");

String fileName = URLEncoder.encode("学生信息列表.xls", "UTF-8");

response.setHeader("Content-disposition", "attachment;filename=" + fileName);

// 定义Excel表格名称

String[] columnName = {"姓名", "性别", "年龄", "电话"};

// 定义表格数据

List<List<Object>> data = new ArrayList<>();

for (Student student : dataList) {

List<Object> rowData = new ArrayList<>();

rowData.add(student.getName());

rowData.add(student.getGender());

rowData.add(student.getAge());

rowData.add(student.getPhone());

data.add(rowData);

}

// 将表格数据写入Excel文件

OutputStream outputStream = response.getOutputStream();

ExcelWriter writer = new ExcelWriter(outputStream, ExcelTypeEnum.XLS);

Sheet sheet1 = new Sheet(1, 0);

sheet1.setSheetName("学生信息表");

writer.write0(data, sheet1, new WriteHandler());

writer.finish();

outputStream.flush();

}

上述代码首先设置响应头,使浏览器响应为Excel文件,然后定义Excel表格名称和表格数据,并将数据写入Excel文件中。

4. 总结

通过本文的介绍,我们可以学习到如何使用Java语言实现表单数据的Excel导入与导出,掌握POI和EasyExcel两个开源框架的基本用法。希望本文能够对读者有所帮助。

后端开发标签