1.选择合适的工具库:apache poi适合小文件操作,easyexcel适合大数据量场景。2.使用apache poi需手动处理单元格类型及数据读取。3.easyexcel通过实体类简化操作,支持监听器和低内存读写。4.常见问题包括格式兼容性、空行处理、日期解析及样式设置。掌握这两个库的使用能应对大多数excel导入导出需求。

在实际开发中,Java 实现 Excel 的导入导出功能非常常见,尤其是在数据报表、批量处理等场景中。本文将直接给出实现方式和关键点,帮助你快速掌握核心技巧。

Java 中操作 Excel 最常用的库有两个:Apache POI 和 EasyExcel。
.xls 和 .xlsx 格式,功能全面但使用起来略显繁琐。如果只是简单的小文件操作,POI 足够;如果涉及大批量数据,优先考虑 EasyExcel。
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelExport {
public static void main(String[] args) throws Exception {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("用户列表");
Row headerRow = sheet.createRow(0);
String[] headers = {"ID", "姓名", "年龄"};
for (int i = 0; i < headers.length; i++) {
Cell cell = headerRow.createCell(i);
cell.setCellValue(headers[i]);
}
// 添加数据行
Row dataRow = sheet.createRow(1);
dataRow.createCell(0).setCellValue(1);
dataRow.createCell(1).setCellValue("张三");
dataRow.createCell(2).setCellValue(25);
try (FileOutputStream fos = new FileOutputStream("users.xlsx")) {
workbook.write(fos);
}
}
}import org.apache.poi.ss.usermodel.*;
public class ExcelImport {
public static void main(String[] args) throws Exception {
Workbook workbook = WorkbookFactory.create(new File("users.xlsx"));
Sheet sheet = workbook.getSheetAt(0);
for (Row row : sheet) {
for (Cell cell : row) {
System.out.print(cell.toString() + "\t");
}
System.out.println();
}
}
}注意:
立即学习“Java免费学习笔记(深入)”;
- 处理数字单元格时要判断类型
cell.getCellType() == CellType.NUMERIC- 字符串用
getStringCellValue()获取- 可以结合
Map或实体类来存储每一行数据
@Data
public class User {
@ExcelProperty("ID")
private int id;
@ExcelProperty("姓名")
private String name;
@ExcelProperty("年龄")
private int age;
}List<User> userList = new ArrayList<>();
// 添加测试数据
userList.add(new User(1, "张三", 25));
userList.add(new User(2, "李四", 30));
EasyExcel.write(new File("users_easy.xlsx"), User.class)
.sheet("用户列表")
.doWrite(userList);List<User> users = new ArrayList<>();
EasyExcel.read(new File("users_easy.xlsx"), User.class, new PageReadListener<User>(users::addAll))
.sheet()
.doRead();使用 EasyExcel 的优势在于:
- 不用手动处理各种单元格类型
- 支持监听器异步读取
- 内存占用低,适合百万级数据导入导出
文件格式兼容性问题.xls 和 .xlsx 是两种不同格式,Apache POI 需要用不同的类(HSSF vs XSSF)来处理。
空行或空单元格处理
有些时候 Excel 文件中间有空白行或列,遍历的时候要注意跳过。
日期格式解析异常
Excel 中的日期本质上是数字,需要通过 DateUtil.isCellDateFormatted(cell) 来判断是否为日期,并用 getDateCellValue() 正确获取。
样式设置复杂
如果需要设置字体、背景色、边框等样式,Apache POI 需要创建 CellStyle 并复用,不能每次都新建。
基本上就这些内容了。掌握了 Apache POI 和 EasyExcel 的使用,你可以应对大部分 Excel 导入导出的需求。刚开始可能会觉得 API 多不好记,但多练几次就能熟练上手。
以上就是使用Java实现Excel导入导出功能的详细技术教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号