欢迎访问宙启技术站
智能推送

如何在 Java 中读取和写入 Excel 文件?

发布时间:2023-05-23 16:19:22

Java 是一种面向对象的编程语言,拥有丰富的类库和工具,可以轻松读取和写入 Excel 文件。在 Java 中,读取和写入 Excel 文件可以通过 POI 库(Apache POI)来实现,POI 是一个处理 Microsoft Office 格式文件的 Java 库,支持 Excel、Word、PowerPoint、Outlook 等文件格式,可以读取和写入各种 Microsoft Office 格式文件。

这篇文章将讨论以下主题:

1. 添加 POI 库的依赖

2. 读取 Excel 文件中的数据

3. 写入数据至 Excel 文件中

1. 添加 POI 库的依赖

POI 库是基于 Java 语言开发的处理 Microsoft Office 格式文件的流行库,因此在使用 POI 库之前,需要将依赖库添加至项目中。可以通过构建工具(如 Maven 或 Gradle)来添加 POI 库的依赖,引入 POI 时应该使用以下代码:

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.0.0</version>
</dependency>

2. 读取 Excel 文件中的数据

读取 Excel 文件中的数据是非常有用的操作。在 Java 中,使用 POI 库可以轻松地实现此操作。以下是一个读取 Excel 文件中的数据示例代码:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Iterator;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

public class ReadExcel {
    public static void main(String[] args) {
        try {
            FileInputStream inputStream = new FileInputStream(new File("ExcelFile.xlsx"));
            Workbook workbook = WorkbookFactory.create(inputStream);

            // 从工作簿中获取      个表单
            Sheet sheet = workbook.getSheetAt(0);

            // 迭代表单的每一行
            Iterator<Row> rowIterator = sheet.iterator();
            while (rowIterator.hasNext()) {
                Row row = rowIterator.next();

                // 迭代行的每一列
                Iterator<Cell> cellIterator = row.iterator();
                while (cellIterator.hasNext()) {
                    Cell cell = cellIterator.next();

                    // 如果当前列为字符串
                    if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                        System.out.print(cell.getStringCellValue() + " ");
                    } 
                    // 如果当前列为数字
                    else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                        System.out.print(cell.getNumericCellValue() + " ");
                    }
                }
                System.out.println();
            }
            workbook.close();
            inputStream.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

上述代码从指定的 Excel 文件(ExcelFile.xlsx)中读取数据,并将其输出到控制台。首先,代码使用 FileInputStream 类从 Excel 文件中读取数据,然后使用 WorkbookFactory.create(inputStream) 方法创建工作簿对象,其中 inputStream 是指向 Excel 文件的文件流对象。接着,代码使用 workbook.getSheetAt(0) 方法获取 个表单对象,然后使用 sheet.iterator() 方法获取迭代器对象以遍历每一行数据。在每一行内,使用 row.iterator() 方法获取迭代器对象并遍历每个单元格。最后,使用 cell.getCellType() 方法检查当前单元格的数据类型,并分别处理数字和字符数据。

3. 写入数据至 Excel 文件中

在 Java 中,使用 POI 库可以轻松地将数据写入 Excel 文件中。以下是写入数据至 Excel 文件中的示例代码:

import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class WriteExcel {
    public static void main(String[] args) {
        // 创建新的 Excel 文件
        XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFSheet sheet = workbook.createSheet("Sheet1");

        // 创建行和单元格
        Row row = sheet.createRow(0);
        Cell cell = row.createCell(0);

        // 写入数据
        cell.setCellValue("Hello, World!");

        // 将 Excel 文件保存到指定位置
        try {
            FileOutputStream outputStream = new FileOutputStream("ExcelFile.xlsx");
            workbook.write(outputStream);
            outputStream.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        System.out.println("文件已成功编写!");
    }
}

上述代码创建一个新的 Excel 文件,并创建一个名为 Sheet1 的表单。接着,代码创建一个行和一个单元格对象,并使用 cell.setCellValue() 方法将数据写入单元格中。最后,将整个工作簿对象保存到指定的文件位置。

结论

使用 POI 库可以方便地在 Java 中读取和写入 Excel 文件。无论是读取现有文件的数据,还是创建和更新新文件,都可以使用 POI 库访问 Microsoft Excel 文件的内容。此外,POI 还提供了其他功能,如创建图表、合并表单和格式化文档。开发人员可以参考 POI 文档以了解更多细节和示例。