POI实战-java开发excel详解之简单excel读取

1.3 POI简单读取Excel数据

 代码部分:

[java]  view plain copy
  1. package com.vintage.testpoi;  
  2.   
  3. import java.io.File;  
  4. import java.io.FileInputStream;  
  5. import java.io.FileNotFoundException;  
  6. import java.io.IOException;  
  7. import java.io.InputStream;  
  8.   
  9. import org.apache.poi.hssf.usermodel.HSSFCell;  
  10. import org.apache.poi.hssf.usermodel.HSSFRow;  
  11. import org.apache.poi.hssf.usermodel.HSSFSheet;  
  12. import org.apache.poi.hssf.usermodel.HSSFWorkbook;  
  13.   
  14. /** 
  15.  * POI入门 :简单读取excel数据 
  16.  * @author VintageYu 
  17.  * 
  18.  */  
  19. public class ReadExcelTest {  
  20.       
  21.     public static void read(InputStream inputStream) throws IOException{  
  22.         //初始整个Excel  
  23.         HSSFWorkbook workbook = new HSSFWorkbook(inputStream);  
  24.         //获取第一个Sheet表  
  25.         HSSFSheet sheet = workbook.getSheetAt(0);//或者 HSSFSheet sheet = workbook.getSheet("Sheet1");  
  26.         //获取第一行  
  27.         HSSFRow row0 = sheet.getRow(0);  
  28.         //获取第一行的第一个单元格  
  29.         HSSFCell cell = row0.getCell(0);  
  30.         //打印  
  31.         System.out.println(cell.getRichStringCellValue().getString());  
  32.           
  33.     }  
  34.       
  35.     public static void main(String[] args) {  
  36.         InputStream inputStream = null;  
  37.         try {  
  38.             //读取文件流  
  39.             inputStream = new FileInputStream(new File("E:\\read1.xls"));  
  40.             read(inputStream);  
  41.         } catch (FileNotFoundException e) {  
  42.             e.printStackTrace();  
  43.         } catch (IOException e) {  
  44.             e.printStackTrace();  
  45.         }finally{  
  46.             try {  
  47.                 if(inputStream != null){  
  48.                     inputStream.close();  
  49.                 }  
  50.             } catch (IOException e) {  
  51.                 e.printStackTrace();  
  52.             }  
  53.         }  
  54.     }  
  55.   
  56. }  

输入结果见图2


为了进一步贴近实际,将上面部分代码进行如下修改

[java]  view plain copy
  1. //获取第一个Sheet表  
  2.         HSSFSheet sheet = workbook.getSheetAt(0);//或者 HSSFSheet sheet = workbook.getSheet("Sheet1");  
  3.         //获取第一行  
  4.         HSSFRow row0 = sheet.getRow(0);  
  5.         //获取第一行的第一个单元格  
  6.         HSSFCell cell = row0.getCell(0);  
  7.         //打印  
  8.         System.out.println(cell.getRichStringCellValue().getString());  
  9.   
  10. 将这部分代码改为  
  11.   
  12. //循环workbook中所有sheet  
  13.         for(int sheetIndex = 0; sheetIndex < workbook.getNumberOfSheets(); sheetIndex++){  
  14.             HSSFSheet sheet = workbook.getSheetAt(sheetIndex);  
  15.             System.out.println("sheet序号:"+sheetIndex+",sheet名称:"+workbook.getSheetName(sheetIndex));  
  16.             //循环该sheet中的有数据的每一行  
  17.             for(int rowIndex = 0; rowIndex <= sheet.getLastRowNum(); rowIndex++){  
  18.                 HSSFRow row = sheet.getRow(rowIndex);  
  19.                 if(row == null){  
  20.                     continue;  
  21.                 }  
  22.                 //循环该行的每一个单元格  
  23.                 for(int cellnum = 0; cellnum < row.getLastCellNum(); cellnum++){  
  24.                     HSSFCell cell = row.getCell(cellnum);  
  25.                     System.out.println("第"+rowIndex+"行     第"+cellnum+"列        内容为:"+cell.getRichStringCellValue().getString());  
  26.                 }  
  27.             }  
  28.             System.out.println("---------------------------------------------------------");  
  29.         }  

打印结果如图3


图3

注:

workbook.getNumberOfSheets()= 3 --- 测试用Excel(图1)有3个sheet,得到的就是sheet的个数

sheet.getLastRowNum()= 3 --- 测试用Excel(图1)中Sheet1表有4行数据,所以得到的数据是POI中行序列的3

row.getLastCellNum()= 4 --- 测试用Excel(图1)中Sheet1表有4列数据,所以得到的数据是POI中列数


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值