Java从Excel读取xlsx格式数据

发布于 2023-04-23  247 次阅读


Java从Excel读取xlsx格式数据

  Excel 是办公软件套装中经常使用的一款电子表格软件,其中 xlsx 是 Excel 2007 或更高版本中使用的默认文件格式。在工作中,我们需要使用 Java 读取 xlsx 数据进行后续处理。这里我们就来介绍一下 Java 读取 xlsx 数据的方法。

创建 xlsx 文件

  在开始操作之前,我们需要先创建一个 xlsx 文件,这里我们以学生成绩单为例,创建一个包含学生成绩信息的 xlsx 文件。首先我们打开 Excel 2007 或更高版本,创建一个新的工作簿(即 File -> New -> Workbook)。在第一个工作表中,创建一个表格,注意表头及表格数据类型,如下:

学生姓名 语文成绩 数学成绩 英语成绩
张三 89 93 87
李四 92 91 96
王五 87 88 84

  完成上述表格之后,保存为一个 xlsx 文件。

导入依赖库

  我们需要导入 Apache POI 依赖库来实现 Java 读取 xlsx 数据,记得在导入代码后要刷新。在 Maven 项目的 pom.xml 文件中添加以下依赖:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.2</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.2</version>
</dependency>

读取 xlsx 数据

  在依赖库导入后,我们可以开始编写代码来读取 xlsx 文件中的数据。以下代码演示了如何读取上述学生成绩单文件中的数据:

import java.io.File;
import java.io.FileInputStream;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ReadExcel {
    public static void main(String[] args) {
        try {
            FileInputStream file = new FileInputStream(new File("学生成绩单.xlsx"));

            // 通过构造函数创建 XSSFWorkbook 对象实例
            XSSFWorkbook workbook = new XSSFWorkbook(file);

            // 获得第一个工作表
            Sheet sheet = workbook.getSheetAt(0);

            // 遍历每一行
            for (Row row : sheet) {
                // 遍历每一个单元格
                for (Cell cell : row) {
                    // 根据元素类型输出
                    switch (cell.getCellType()) {
                        case STRING:
                            System.out.print(cell.getStringCellValue() + "\t");
                            break;
                        case NUMERIC:
                            System.out.print(cell.getNumericCellValue() + "\t");
                            break;
                        default:
                            break;
                    }
                }
                System.out.println();
            }
            file.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

  在代码中,我们首先通过 FileInputStream 对象获取到 xlsx 文件的输入流,再通过 XSSFWorkbook 对象实例将其读入内存中。我们通过 getSheetAt 方法获取到工作表实例(这里是第一个工作表),再通过 for 循环遍历表格中的每一行数据,最后通过 switch 语句判断单元格数据的类型,输出相应的数据值。

注意事项

  在程序中进行文件读取时,需要特别注意以下事项:
  文件路径:要读取文件,需要指定文件的路径。文件路径一般是以项目根目录为初始路径,即你把xlsx文件放在根目录下就不用加任何前缀只需要写文件的文件名称.xlsx就行。

  上述图片文件路径就应该是src/main/java/Test3/FirstQuestion/excel.xlsx,项目根目录Test不用写。
  文件编码:如果要读取文本文件,需要注意文件编码格式。常见的编码格式有UTF-8、GB2312等等。读取文件时需指定正确的编码格式,否则有可能会出现乱码。
  数据类型:在读取不同的数据类型时,需要注意数据类型的格式与文件中的格式是否一致。如果不一致,需要进行数据类型转换,否则可能会出现数据读取错误。
  读取位置:要读取文件中的数据,需要准确地指定读取的位置。这个位置可以是文件的指定行、指定列、指定字符位置等等,此时需要使用正确的读取方法来指定位置,如使用Row row = sheet.getRow(i)读取行数据,使用row.getCell(0).get...指定读取位置等等。
  文件读取完毕后,需要对文件进行关闭操作,以释放资源。
总之,在进行文件读取时,需要准确地指定文件路径、编码格式和读取位置,以及选择正确的数据类型和读取方法,才能够正常读取文件中的数据。

结束语

  以上就是使用 Java 读取 xlsx 数据的方法及示例程序,希望对大家有所帮助。总的来说,读取 xlsx 数据一般分为三个步骤:创建 xlsx 文件,导入依赖库,读取 xlsx 数据。我们需要注意依赖库版本与文件路径的问题,在代码中调用相关 API 实现具体的操作。


学习记录,经验分享