使用POI实现Excel文件的读取(超详细)

目录

一 导入poi相关的maven坐标

二 实现创建并且写入文件

2.1实现步骤

 2.2实现代码

2.3效果展示

​编辑 

2.4注意

三 实现从Excel文件中读取数据 

3.1实现步骤

3.2实现代码

 3.3结果展示


一 导入poi相关的maven坐标

        <!-- Apache poi -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
        </dependency>

二 实现创建并且写入文件

2.1实现步骤

        往Excel文件中写入数据大致分为五步:

        1.创建excel文件

        2.创建excel文件的sheet页

        3.在sheet页中创建表格的行和列,即单元格

        4.在对应单元格中写入数据

        5.指定创建文件的路径

        6.关闭资源

 2.2实现代码

创建Excel文件并且写入数据的代码:

 /**
     * 通过POI创建excel文件并且向文件中写入数据
     */
    public static void write() throws Exception {
        // 1.创建一个新的excel文件
        XSSFWorkbook excel = new XSSFWorkbook(); // 通过这个方法是在内存中创建的
        // 2.在excel文件中创建一个sheet标签页
        XSSFSheet sheet = excel.createSheet("info"); // info是这个sheet的名字,不是excel文件的名字

        // 3.在sheet标签页中创建行对象
        XSSFRow row = sheet.createRow(0); // 下标从0开始,0代表第一行

        // 4.在行上面创建单元格并写入数据
        row.createCell(0).setCellValue("序号"); // 第一列
        row.createCell(1).setCellValue("姓名"); // 第二列
        row.createCell(2).setCellValue("年龄"); // 第三列

        // 然后在第二行对应的列下面写入相应的值
        XSSFRow row2 = sheet.createRow(1);
        row2.createCell(0).setCellValue("1"); // 序号为1
        row2.createCell(1).setCellValue("张三"); // 姓名为张三
        row2.createCell(2).setCellValue("99"); // 年龄为18

        // 在第三行对应的列下面写入对应的值
        XSSFRow row3 = sheet.createRow(2);
        row3.createCell(0).setCellValue("2");
        row3.createCell(1).setCellValue("李四");
        row3.createCell(2).setCellValue("23");

        // ... 后面按照需要自己继续创建单元格写内容

        // 5.最后指定excel文件写入的地址
        FileOutputStream fileOutputStream = new FileOutputStream(new File("D:\\feisi\\cangQiong\\info.xlsx"));
        excel.write(fileOutputStream);

        // 6.关闭资源
        fileOutputStream.close();
        excel.close();
    }

2.3效果展示

 

文件内容:

2.4注意

        这里有一个点特别需要注意,就是这段往单元格中写入数据的代码:

        // 然后在第二行对应的列下面写入相应的值
        XSSFRow row2 = sheet.createRow(1);
        row2.createCell(0).setCellValue("1"); // 序号为1
        row2.createCell(1).setCellValue("张三"); // 姓名为张三
        row2.createCell(2).setCellValue("99"); // 年龄为18

在上面这段代码中 , 我们经常会因为方便,不先给对象引入变量row2 , 而是直接调用创建列的方法,然后写入数据,这样会导致数据写不进去 , 如下:

        // 然后在第二行对应的列下面写入相应的值
        // XSSFRow row2 = sheet.createRow(1);
        sheet.createRow(1).createCell(0).setCellValue("1"); // 序号为1
        sheet.createRow(1).createCell(1).setCellValue("张三"); // 姓名为张三
        sheet.createRow(1).createCell(2).setCellValue("99"); // 年龄为18

 那么得到的表格就会数据缺失,结果如下:

三 实现从Excel文件中读取数据 

3.1实现步骤

读取excel文件大致分为五步:

1.获取指定的excel文件对象

2.获取指定该文件对象的sheet页

3.遍历该sheet页中的行

4.遍历每一行的所有列并且获取该单元格的数据

5.关闭资源

3.2实现代码

读取excel文件方法实现代码如下:

  public static void read() throws Exception{
//        1.还是一样得到一个excel文件对象,但是我们这里是读 , 所以要指定文件路径
        FileInputStream fileInputStream = new FileInputStream(new File("D:\\feisi\\cangqiong\\info.xlsx"));
        XSSFWorkbook excel = new XSSFWorkbook(fileInputStream);
//        2.读取excel文件中的sheet1页(因为这个文件就只创建了一个sheet页)
//        XSSFSheet sheet = excel.getSheetAt(0);//这是直接拿第一个sheet页
        XSSFSheet sheet = excel.getSheet("info");//这是根据sheet页的名字来拿sheet页
//        3.遍历所有行,但是我不知道有多少行,所以我可以直接获取最后有文字的那一行,这样就知道一个有多少行了
        int lastRowNum = sheet.getLastRowNum();//获取有文字的最后一行行号
        for (int i = 0 ; i<=lastRowNum ; ++i){
//            获得某一行
            XSSFRow row = sheet.getRow(i);
//            4.遍历该行得所有单元格对象,并且获取该单元格对象中得数据
            for (Cell cell : row){
                String stringCellValue = cell.getStringCellValue();
                System.out.print(stringCellValue+"\t");
            }
//            读完一行的数据后换行
            System.out.println();
        }
//        5.关闭资源
        excel.close();
        fileInputStream.close();
    }

 3.3结果展示

调用该方法,得到输出的excel中获取到的数据:

本次分享就在这里 , 谢谢大家,加油! 

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java使用POI库可以实现Excel文件读取操作。具体的步骤如下: 1. 引用POI库。在Java项目中引入POI相关的jar包。 2. 创建文件输入流。使用FileInputStream类创建一个输入流对象,并指定要读取Excel文件路径。 3. 创建工作簿对象。使用HSSFWorkbook类创建一个工作簿对象,将输入流作为参数传入。 4. 获取工作表。使用getSheetAt方法获取指定的工作表,可以通过工作表的索引或名称进行获取。 5. 获取行。使用getRow方法获取指定行的对象,行号作为参数传递给该方法。 6. 获取单元格。使用getCell方法获取指定单元格的对象,行号和列号作为参数传递给该方法。 7. 获取单元格的值。使用getStringCellValue方法获取单元格的值,将其赋给一个字符串变量。 8. 输出结果。使用System.out.println方法将获取到的数据打印出来。 需要注意的是,在读取Excel文件时可能会出现FileNotFoundException和IOException异常,需要进行异常处理。同时,在读取完成后,需要关闭输入流。 下面是一个示例代码,用于演示Java使用POI读取Excel文件: ```java import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class ExcelReader { public static void poiRead() { FileInputStream xlsStream = null; try { // 创建文件输入流 xlsStream = new FileInputStream(new File("C:\\Users\\itour\\Desktop\\poiTest.xls")); // 创建工作簿对象 HSSFWorkbook hssfWorkbook = new HSSFWorkbook(xlsStream); // 获取工作表 HSSFSheet sheetAt = hssfWorkbook.getSheetAt(0); // 获取行 HSSFRow row = sheetAt.getRow(0); // 获取单元格 HSSFCell cell = row.getCell(0); // 获取单元格的值 String cellValue = cell.getStringCellValue(); System.out.println("获取到的数据是:" + cellValue); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (xlsStream != null) { try { xlsStream.close(); } catch (IOException e) { e.printStackTrace(); } } } } } ``` 以上代码演示了如何使用POI读取Excel文件中第一个工作表的第一个单元格的值。你可以根据自己的需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值