当前位置:首页 > Java

java如何读取excel

2026-02-04 13:21:43Java

读取Excel文件的常用方法

在Java中读取Excel文件通常使用Apache POI或JExcelAPI等库。以下是几种常见的实现方式:

使用Apache POI读取.xlsx文件(Excel 2007+格式)

Apache POI是处理Microsoft Office文档的流行库。对于.xlsx格式,使用XSSFWorkbook类:

import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFCell;
import java.io.FileInputStream;

public class ReadExcel {
    public static void main(String[] args) {
        try (FileInputStream file = new FileInputStream("example.xlsx")) {
            XSSFWorkbook workbook = new XSSFWorkbook(file);
            XSSFSheet sheet = workbook.getSheetAt(0);

            for (int i = 0; i <= sheet.getLastRowNum(); i++) {
                XSSFRow row = sheet.getRow(i);
                for (int j = 0; j < row.getLastCellNum(); j++) {
                    XSSFCell cell = row.getCell(j);
                    System.out.print(cell.toString() + "\t");
                }
                System.out.println();
            }
            workbook.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

使用Apache POI读取.xls文件(Excel 97-2003格式)

对于旧版Excel文件,使用HSSFWorkbook类:

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import java.io.FileInputStream;

public class ReadOldExcel {
    public static void main(String[] args) {
        try (FileInputStream file = new FileInputStream("example.xls")) {
            HSSFWorkbook workbook = new HSSFWorkbook(file);
            HSSFSheet sheet = workbook.getSheetAt(0);

            for (int i = 0; i <= sheet.getLastRowNum(); i++) {
                HSSFRow row = sheet.getRow(i);
                for (int j = 0; j < row.getLastCellNum(); j++) {
                    HSSFCell cell = row.getCell(j);
                    System.out.print(cell.toString() + "\t");
                }
                System.out.println();
            }
            workbook.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

使用EasyExcel读取大文件

对于大型Excel文件,阿里巴巴的EasyExcel库更高效:

import com.alibaba.excel.EasyExcel;
import java.util.List;

public class ReadLargeExcel {
    public static void main(String[] args) {
        String fileName = "large_example.xlsx";
        EasyExcel.read(fileName, DemoData.class, new DemoDataListener()).sheet().doRead();
    }
}

class DemoDataListener implements AnalysisEventListener<DemoData> {
    public void invoke(DemoData data, AnalysisContext context) {
        System.out.println(data);
    }
    public void doAfterAllAnalysed(AnalysisContext context) {}
}

处理不同单元格类型

读取单元格时需要处理不同类型的数据:

switch (cell.getCellType()) {
    case STRING:
        System.out.print(cell.getStringCellValue());
        break;
    case NUMERIC:
        System.out.print(cell.getNumericCellValue());
        break;
    case BOOLEAN:
        System.out.print(cell.getBooleanCellValue());
        break;
    default:
        System.out.print("");
}

Maven依赖配置

使用Apache POI需要添加以下依赖:

<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>

对于EasyExcel:

java如何读取excel

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>3.1.3</version>
</dependency>

注意事项

  • 处理大文件时考虑使用流式读取(如EasyExcel)
  • 关闭工作簿和输入流防止资源泄漏
  • 处理空单元格和异常情况
  • 考虑使用try-with-resources语句自动关闭资源

标签: javaexcel
分享给朋友:

相关文章

java如何创建文件

java如何创建文件

使用 File 类创建文件 通过 File 类的 createNewFile() 方法创建文件。此方法返回布尔值,表示文件是否成功创建。 import java.io.File; import ja…

java程序如何运行

java程序如何运行

编写Java代码 使用文本编辑器或IDE(如IntelliJ IDEA、Eclipse)编写Java源代码,保存为.java文件。例如: public class HelloWorld {…

java如何学习

java如何学习

学习Java的有效方法 理解基础概念 Java是一门面向对象的编程语言,掌握基础概念如变量、数据类型、运算符、控制语句(if-else、循环)是必要的。面向对象的核心概念包括类、对象、继承、多态和封装…

java如何实现异步

java如何实现异步

Java实现异步的方法 Java中实现异步编程可以通过多种方式,每种方式适用于不同的场景和需求。以下是常见的实现方法: 使用Thread类 创建新线程执行异步任务是最基础的方式。通过继承Thread…

java如何遍历map

java如何遍历map

遍历Map的几种方法 在Java中,遍历Map有多种方式,可以根据需求选择合适的方法。以下是常见的几种遍历方式: 使用entrySet遍历 通过entrySet()方法获取键值对的集合,可以同时访问…

php 实现 java md5加密

php 实现 java md5加密

PHP 实现 Java MD5 加密 Java 和 PHP 的 MD5 加密结果可能存在差异,主要由于字符编码和输出格式的不同。以下是确保 PHP 与 Java MD5 加密结果一致的方法。 确保字…