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两个开源框架的基本用法。希望本文能够对读者有所帮助。