当前位置:首页 > Java

java如何读取xls

2026-03-25 00:26:47Java

读取XLS文件的方法

Java可以通过Apache POI库来读取XLS格式的Excel文件。Apache POI是一个流行的Java库,用于处理Microsoft Office格式的文件。

添加依赖

在Maven项目中,需要在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.3</version>
</dependency>

对于Gradle项目,在build.gradle中添加:

implementation 'org.apache.poi:poi:5.2.3'

基本读取步骤

使用HSSFWorkbook类来处理XLS文件:

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;
import java.io.IOException;

public class ReadXLS {
    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream("example.xls");
             HSSFWorkbook workbook = new HSSFWorkbook(fis)) {

            HSSFSheet sheet = workbook.getSheetAt(0);

            for (int rowIndex = 0; rowIndex <= sheet.getLastRowNum(); rowIndex++) {
                HSSFRow row = sheet.getRow(rowIndex);
                if (row != null) {
                    for (int cellIndex = 0; cellIndex < row.getLastCellNum(); cellIndex++) {
                        HSSFCell cell = row.getCell(cellIndex);
                        if (cell != null) {
                            System.out.print(cell.toString() + "\t");
                        }
                    }
                    System.out.println();
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

处理不同类型的数据

XLS文件中的单元格可能包含不同类型的数据:

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;
    case FORMULA:
        System.out.print(cell.getCellFormula());
        break;
    default:
        System.out.print("");
}

处理日期格式

对于日期类型的单元格:

if (DateUtil.isCellDateFormatted(cell)) {
    System.out.print(cell.getDateCellValue());
} else {
    System.out.print(cell.getNumericCellValue());
}

读取特定区域

只读取特定行和列范围内的数据:

int startRow = 1;
int endRow = 10;
int startCol = 0;
int endCol = 5;

for (int rowIndex = startRow; rowIndex <= endRow; rowIndex++) {
    HSSFRow row = sheet.getRow(rowIndex);
    if (row != null) {
        for (int cellIndex = startCol; cellIndex <= endCol; cellIndex++) {
            HSSFCell cell = row.getCell(cellIndex);
            // 处理单元格数据
        }
    }
}

注意事项

  • 确保文件路径正确且有读取权限
  • 处理完工作簿后应关闭资源,使用try-with-resources自动管理
  • 对于大文件,考虑使用事件驱动的API(如HSSFEventUserModel)以减少内存消耗
  • 不同版本的POI可能有API差异,注意版本兼容性

高级特性

对于更复杂的操作,可以:

java如何读取xls

  • 使用HSSFFormulaEvaluator计算公式结果
  • 通过HSSFDataValidation处理数据验证
  • 利用HSSFHeaderHSSFFooter处理页眉页脚
  • 使用HSSFComment处理单元格注释

标签: javaxls
分享给朋友:

相关文章

如何用java

如何用java

用Java实现基础功能 Java是一种广泛使用的编程语言,适用于开发各种应用程序。以下是几个常见功能的实现方法。 打印"Hello, World!" public class HelloWorl…

java如何输入数据

java如何输入数据

输入数据的方法 在Java中,输入数据可以通过多种方式实现,具体取决于输入来源(如控制台、文件、网络等)。以下是几种常见的方法: 使用Scanner类从控制台输入 Scanner类是Java中最常用…

如何编译java

如何编译java

安装JDK 确保系统已安装Java Development Kit(JDK)。可通过命令行输入 javac -version 和 java -version 验证是否安装成功。若未安装,需从Oracl…

java如何编写接口

java如何编写接口

编写Java接口的基本语法 在Java中,接口通过interface关键字定义,可以包含抽象方法、默认方法、静态方法和常量。 public interface MyInterface {…

java如何遍历map

java如何遍历map

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

java版本如何查看

java版本如何查看

查看Java版本的命令行方法 在命令行或终端中运行以下命令可以查看当前安装的Java版本: java -version 输出示例: java version "1.8.0_301" Java(TM…