Java操作excel最常用的方式是使用apache poi库,1.引入poi依赖,maven项目添加poi-ooxml依赖;2.读取excel使用xssfworkbook或hssfworkbook打开文件,遍历sheet、row和cell读取内容并关闭资源;3.写入excel创建workbook、sheet、row和cell,设置单元格值并写入文件;4.注意文件格式兼容性、空指针异常、样式设置、性能优化及资源关闭等问题。poi功能强大且适用性强,适用于大多数业务场景。
Java操作Excel文件最常用的方式是使用Apache POI库,它支持.xls和.xlsx格式,功能强大,适用性强。如果你需要从Java程序中读取或写入Excel文件,POI是一个非常合适的选择。
下面我们就来一步步看看如何使用POI来读写Excel文件,适用于大多数业务场景。
一、引入POI依赖
在开始编码之前,首先要确保项目中已经引入了Apache POI的依赖。如果你使用的是Maven项目,可以在pom.xml中添加如下依赖:
立即学习“Java免费学习笔记(深入)”;
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.3</version> </dependency>
这个依赖包含了处理.xlsx格式所需的所有类。如果你还需要处理旧版.xls格式,也可以单独引入poi依赖。
二、使用POI读取Excel文件
读取Excel文件是常见的需求,比如导入数据、分析报表等。以下是一个简单的读取.xlsx文件的示例:
import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.File; import java.io.FileInputStream; import java.io.IOException; public class ExcelReader { public static void main(String[] args) throws IOException { FileInputStream fis = new FileInputStream(new File("data.xlsx")); Workbook workbook = new XSSFWorkbook(fis); Sheet sheet = workbook.getSheetAt(0); for (Row row : sheet) { for (Cell cell : row) { System.out.print(cell.toString() + "t"); } System.out.println(); } workbook.close(); fis.close(); } }
- 使用XSSFWorkbook打开.xlsx文件
- 遍历Sheet中的每一行和每个单元格
- 注意关闭资源(Workbook和FileInputStream)
小提示:如果读取的是.xls文件,可以使用HSSFWorkbook代替XSSFWorkbook。
三、使用POI写入Excel文件
写入Excel文件通常用于导出数据或生成报表。POI提供了非常灵活的API来创建和操作单元格内容。
import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java.io.IOException; public class ExcelWriter { public static void main(String[] args) throws IOException { Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Sheet1"); Row headerRow = sheet.createRow(0); Cell headerCell = headerRow.createCell(0); headerCell.setCellValue("姓名"); headerRow.createCell(1).setCellValue("年龄"); Row dataRow = sheet.createRow(1); dataRow.createCell(0).setCellValue("张三"); dataRow.createCell(1).setCellValue(25); try (FileOutputStream fos = new FileOutputStream("output.xlsx")) { workbook.write(fos); } workbook.close(); } }
- 创建Workbook和Sheet
- 创建行和单元格并设置值
- 最后写入到文件并关闭资源
小技巧:写入大量数据时建议使用SXSSF(基于磁盘缓存)避免内存溢出。
四、常见问题与注意事项
在使用POI过程中,可能会遇到一些常见问题,这里列出几个关键点:
- 文件格式不兼容:确保读取和写入时使用正确的类(如XSSF对应.xlsx,HSSF对应.xls)
- 空指针异常:读取时注意判断行或单元格是否为NULL
- 样式设置:可以通过CellStyle设置字体、背景色、边框等
- 性能问题:大数据量读写时,建议使用SXSSF模式
- 关闭资源:务必在finally块中关闭Workbook和流,避免内存泄漏
基本上就这些。POI虽然功能强大,但用起来并不复杂,只要掌握基本结构和API,就能满足大部分Excel操作需求。