Java解析XLS和XLSX文件

在Java开发中,我们经常需要处理各种类型的文件,其中包括Microsoft Excel文件。Excel文件有两种常见的格式:XLS和XLSX。本文将介绍如何使用Java解析这两种格式的Excel文件,并提供相关的代码示例。

1. Apache POI库

Apache POI是一个流行的Java库,用于处理Microsoft Office文件,包括Excel。它提供了一组API,使得解析和操作Excel文件变得更加容易。要使用Apache POI,你需要将其相关的库文件添加到项目中。可以通过Maven或手动下载的方式来获取这些库文件。

2. 解析XLS文件

首先,我们来看一下如何解析XLS格式的Excel文件。以下是一个简单的代码示例,演示如何读取一个XLS文件中的数据:

import java.io.File;
import java.io.FileInputStream;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;

public class XLSParser {
    public static void main(String[] args) {
        try {
            FileInputStream file = new FileInputStream(new File("path/to/excel.xls"));
            
            Workbook workbook = new HSSFWorkbook(file);
            Sheet sheet = workbook.getSheetAt(0);
            
            for (Row row : sheet) {
                for (Cell cell : row) {
                    CellType cellType = cell.getCellTypeEnum();
                    
                    if (cellType == CellType.STRING) {
                        System.out.print(cell.getStringCellValue() + "\t");
                    } else if (cellType == CellType.NUMERIC) {
                        System.out.print(cell.getNumericCellValue() + "\t");
                    } else if (cellType == CellType.BOOLEAN) {
                        System.out.print(cell.getBooleanCellValue() + "\t");
                    }
                }
                
                System.out.println();
            }
            
            workbook.close();
            file.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在上述代码中,我们通过FileInputStream类来读取Excel文件。然后,我们使用HSSFWorkbook类来创建一个工作簿对象,并通过getSheetAt方法获取第一个表格。接下来,我们通过两个嵌套的循环来迭代遍历表格中的每一行和每一列。我们使用getCellTypeEnum方法来获取每个单元格的数据类型,并根据不同的类型进行相应的处理。

3. 解析XLSX文件

接下来,我们来看一下如何解析XLSX格式的Excel文件。以下是一个简单的代码示例,演示如何读取一个XLSX文件中的数据:

import java.io.File;
import java.io.FileInputStream;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.*;

public class XLSXParser {
    public static void main(String[] args) {
        try {
            FileInputStream file = new FileInputStream(new File("path/to/excel.xlsx"));
            
            Workbook workbook = new XSSFWorkbook(file);
            Sheet sheet = workbook.getSheetAt(0);
            
            for (Row row : sheet) {
                for (Cell cell : row) {
                    CellType cellType = cell.getCellTypeEnum();
                    
                    if (cellType == CellType.STRING) {
                        System.out.print(cell.getStringCellValue() + "\t");
                    } else if (cellType == CellType.NUMERIC) {
                        System.out.print(cell.getNumericCellValue() + "\t");
                    } else if (cellType == CellType.BOOLEAN) {
                        System.out.print(cell.getBooleanCellValue() + "\t");
                    }
                }
                
                System.out.println();
            }
            
            workbook.close();
            file.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

与解析XLS文件的代码类似,我们只需要将HSSFWorkbook类替换为XSSFWorkbook类,其余的代码保持不变。这是因为XLSX文件是通过XML形式存储的,而XLS文件是二进制格式。

4. 总结

本文介绍了如何使用Java解析XLS和XLSX格式的Excel文件。我们使用了Apache POI库提供的API来读取Excel文件中的数据,并提供了相应的代码示例。通过这些示例代码,你可以轻松地将Excel文件的内容导入到Java应用程序中进行进一步的处理。

注意:为了使代码示例更加简洁,我们省略了异常处理的细节。在实际开发中,请确保正确处理可能出现的异常情况。

请根据自己的需要,将代码示例中的"path/to/ex