java 如何打开excel
使用 Apache POI 库读取 Excel 文件
Apache POI 是处理 Microsoft Office 文件(包括 Excel)的流行 Java 库。需要添加以下依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.3</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
读取 .xlsx 文件的代码示例:
import org.apache.poi.ss.usermodel.*;
import java.io.FileInputStream;
public class ExcelReader {
public static void main(String[] args) {
try (FileInputStream file = new FileInputStream("example.xlsx");
Workbook workbook = WorkbookFactory.create(file)) {
Sheet sheet = workbook.getSheetAt(0);
for (Row row : sheet) {
for (Cell cell : row) {
System.out.print(cell.toString() + "\t");
}
System.out.println();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
使用 JExcelAPI 读取旧版 Excel 文件
对于 .xls 格式,可以使用 JExcelAPI(jxl):

<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
</dependency>
代码示例:
import jxl.*;
import java.io.File;
public class JExcelReader {
public static void main(String[] args) {
try {
Workbook workbook = Workbook.getWorkbook(new File("example.xls"));
Sheet sheet = workbook.getSheet(0);
for (int row = 0; row < sheet.getRows(); row++) {
for (int col = 0; col < sheet.getColumns(); col++) {
Cell cell = sheet.getCell(col, row);
System.out.print(cell.getContents() + "\t");
}
System.out.println();
}
workbook.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
使用 EasyExcel 处理大数据量
EasyExcel 适合处理大文件且内存占用低:

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.3.2</version>
</dependency>
读取示例:
import com.alibaba.excel.EasyExcel;
import java.util.List;
public class EasyExcelReader {
public static void main(String[] args) {
String fileName = "example.xlsx";
EasyExcel.read(fileName, new ExcelDataListener()).sheet().doRead();
}
}
class ExcelDataListener implements AnalysisEventListener<List<String>> {
@Override
public void invoke(List<String> data, AnalysisContext context) {
System.out.println(data);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {}
}
写入 Excel 文件
使用 Apache POI 写入 .xlsx 文件:
import org.apache.poi.xssf.usermodel.*;
import java.io.FileOutputStream;
public class ExcelWriter {
public static void main(String[] args) {
try (XSSFWorkbook workbook = new XSSFWorkbook();
FileOutputStream out = new FileOutputStream("output.xlsx")) {
XSSFSheet sheet = workbook.createSheet("Sheet1");
XSSFRow row = sheet.createRow(0);
row.createCell(0).setCellValue("Hello");
row.createCell(1).setCellValue("World");
workbook.write(out);
} catch (Exception e) {
e.printStackTrace();
}
}
}
注意事项
处理 Excel 文件时需注意文件路径权限问题。不同库对 Excel 版本的支持有差异:Apache POI 支持 .xls 和 .xlsx,而 JExcelAPI 仅支持 .xls。大数据量场景推荐使用 EasyExcel 或 Apache POI 的流式 API(SXSSFWorkbook)。






