欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > 使用POI实现Excel文件的读取(超详细)

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

2024/10/25 5:20:14 来源:https://blog.csdn.net/m0_63624484/article/details/140207015  浏览:    关键词:使用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"); // 序号为1row2.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"); // 序号为1row2.createCell(1).setCellValue("张三"); // 姓名为张三row2.createCell(2).setCellValue("99"); // 年龄为18

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

        // 然后在第二行对应的列下面写入相应的值// XSSFRow row2 = sheet.createRow(1);sheet.createRow(1).createCell(0).setCellValue("1"); // 序号为1sheet.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中获取到的数据:

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com