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

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

一、选择合适的工具库
Java 中操作 Excel 最常用的库有两个:Apache POI 和 EasyExcel。
Apache POI 是老牌工具,支持 .xls 和 .xlsx 格式,功能全面但使用起来略显繁琐。EasyExcel 是阿里巴巴开源的库,基于 POI 做了封装,更适合大数据量读写,性能更好,推荐用于新项目。
如果只是简单的小文件操作,POI 足够;如果涉及大批量数据,优先考虑 EasyExcel。
二、使用 Apache POI 实现基本的导入导出
导出 Excel 示例:
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); } }}
导入 Excel 示例:
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免费学习笔记(深入)”;
阿贝智能
阿贝智能是基于AI技术辅助创作儿童绘本、睡前故事和有声书的平台,助你创意实现、梦想成真。
17 查看详情
处理数字单元格时要判断类型
cell.getCellType() == CellType.NUMERIC字符串用getStringCellValue()获取可以结合Map或实体类来存储每一行数据
三、使用 EasyExcel 简化操作(推荐)
定义实体类:
@Datapublic class User { @ExcelProperty("ID") private int id; @ExcelProperty("姓名") private String name; @ExcelProperty("年龄") private int age;}
导出操作:
List 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 users = new ArrayList();EasyExcel.read(new File("users_easy.xlsx"), User.class, new PageReadListener(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导入导出功能的详细技术教程的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/251236.html
微信扫一扫
支付宝扫一扫