用Java读取和写入Excel文件

Excel是一种常用的电子表格文件格式,广泛应用于数据分析、报表生成和数据存储等领域。在Java中,我们可以通过使用特定的库来读取和写入Excel文件,这样可以使我们更方便地处理Excel文件中的数据。本文将介绍如何在Java中使用xlsx和xls格式的Excel文件,并提供相应的代码示例。

1. 使用Apache POI库操作Excel文件

Apache POI是一个开源的Java库,提供了操作各种Office文档的功能,包括Excel、Word和PowerPoint等。它支持xlsx和xls格式的Excel文件,并能够读取和写入其中的数据。

1.1 读取Excel文件

要读取Excel文件,我们需要使用WorkbookSheet对象来表示Excel文件和工作表。下面是一个示例代码,演示了如何读取一个xlsx格式的Excel文件中的数据:

import org.apache.poi.ss.usermodel.*;

public class ReadExcelFile {
    public static void main(String[] args) {
        String filePath = "path/to/excel.xlsx";
        
        try (Workbook workbook = WorkbookFactory.create(new File(filePath))) {
            Sheet sheet = workbook.getSheetAt(0);
            
            for (Row row : sheet) {
                for (Cell cell : row) {
                    System.out.print(cell.toString() + "\t");
                }
                System.out.println();
            }
        } catch (IOException | InvalidFormatException e) {
            e.printStackTrace();
        }
    }
}

上面的代码首先使用WorkbookFactory类的create方法打开Excel文件,然后使用getSheetAt方法获取第一个工作表。接下来,我们可以使用for-each循环遍历工作表中的每一行和每一个单元格,通过toString方法获取单元格的值并输出到控制台。

1.2 写入Excel文件

要写入Excel文件,我们需要创建一个Workbook对象,并在其中创建一个Sheet对象。然后,我们可以使用RowCell对象来设置单元格的值。下面是一个示例代码,演示了如何将数据写入一个xlsx格式的Excel文件中:

import org.apache.poi.ss.usermodel.*;

public class WriteExcelFile {
    public static void main(String[] args) {
        String filePath = "path/to/excel.xlsx";
        
        try (Workbook workbook = new XSSFWorkbook()) {
            Sheet sheet = workbook.createSheet("Sheet1");
            
            Object[][] data = {{"Name", "Age", "Gender"},
                               {"Tom", 25, "Male"},
                               {"Alice", 30, "Female"},
                               {"Bob", 35, "Male"}};
            
            int rowNum = 0;
            for (Object[] rowData : data) {
                Row row = sheet.createRow(rowNum++);
                int colNum = 0;
                for (Object field : rowData) {
                    Cell cell = row.createCell(colNum++);
                    if (field instanceof String) {
                        cell.setCellValue((String) field);
                    } else if (field instanceof Integer) {
                        cell.setCellValue((Integer) field);
                    }
                }
            }
            
            try (FileOutputStream outputStream = new FileOutputStream(filePath)) {
                workbook.write(outputStream);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上面的代码首先创建了一个XSSFWorkbook对象,表示一个xlsx格式的Excel文件。然后,我们使用createSheet方法创建了一个名为"Sheet1"的工作表。接下来,我们定义了一个二维数组data,其中包含了要写入的数据。通过for-each循环遍历二维数组,并使用createRowcreateCell方法创建行和单元格对象,然后通过setCellValue方法设置单元格的值。最后,我们使用FileOutputStream将Workbook对象写入到文件中。

2. 使用JExcelAPI库操作Excel文件

JExcelAPI是另一个流行的Java库,用于读取和写入Excel文件。它支持xls格式的Excel文件,并提供了一组简单易用的API来操作Excel文件中的数据。

2.1 读取Excel文件

要使用JExcelAPI读取Excel文件,我们需要使用WorkbookSheet对象来表示Excel文件和工作表。下面是一个示例代码,演示了如何读取一个xls格式的Excel文件中的数据:

import jxl.Workbook;
import jxl.Sheet;
import jxl.Cell;

public class ReadExcelFile {
    public static void main(String[] args) {