java的poi技术读取Excel

http://www.cnblogs.com/hongten/p/java_poi_excel_xls_xlsx.html



使用poi来解析Excel的xls和xlsx。转自 http://hao0610.iteye.com/blog/1160678

解析xls

  1. import java.io.FileInputStream;  
  2. import java.io.IOException;  
  3. import java.io.InputStream;  
  4. import org.apache.poi.hssf.usermodel.HSSFCell;  
  5. import org.apache.poi.hssf.usermodel.HSSFRow;  
  6. import org.apache.poi.hssf.usermodel.HSSFSheet;  
  7. import org.apache.poi.hssf.usermodel.HSSFWorkbook;  
  8.   
  9. public class XlsMain {  
  10.   
  11.   public static void main( String[] args) throws IOException {  
  12.     XlsMain xlsMain = new XlsMain();  
  13.       
  14.     xlsMain.readXls();  
  15.   }  
  16.   
  17.   private void readXls() throws IOException{  
  18.     InputStream is = new FileInputStream( "D:\\excel\\xls_test2.xls");  
  19.     HSSFWorkbook hssfWorkbook = new HSSFWorkbook( is);   
  20.       
  21.     // 循环工作表Sheet  
  22.     for(int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++){  
  23.       HSSFSheet hssfSheet = hssfWorkbook.getSheetAt( numSheet);  
  24.       if(hssfSheet == null){  
  25.         continue;  
  26.       }  
  27.         
  28.       // 循环行Row   
  29.       for(int rowNum = 0; rowNum <= hssfSheet.getLastRowNum(); rowNum++){  
  30.         HSSFRow hssfRow = hssfSheet.getRow( rowNum);  
  31.         if(hssfRow == null){  
  32.           continue;  
  33.         }  
  34.           
  35.         // 循环列Cell    
  36.         for(int cellNum = 0; cellNum <= hssfRow.getLastCellNum(); cellNum++){  
  37.           HSSFCell hssfCell = hssfRow.getCell( cellNum);  
  38.           if(hssfCell == null){  
  39.             continue;  
  40.           }  
  41.             
  42.           System.out.print("    " + getValue( hssfCell));  
  43.         }  
  44.         System.out.println();  
  45.       }  
  46.     }  
  47.   }  
  48.     
  49.   @SuppressWarnings("static-access")  
  50.   private String getValue(HSSFCell hssfCell){  
  51.     if(hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN){  
  52.       return String.valueOf( hssfCell.getBooleanCellValue());  
  53.     }else if(hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC){  
  54.       return String.valueOf( hssfCell.getNumericCellValue());  
  55.     }else{  
  56.       return String.valueOf( hssfCell.getStringCellValue());  
  57.     }  
  58.   }  
  59.     
  60. }  


解析xlsx


  1. import java.io.IOException;  
  2. import org.apache.poi.xssf.usermodel.XSSFCell;  
  3. import org.apache.poi.xssf.usermodel.XSSFRow;  
  4. import org.apache.poi.xssf.usermodel.XSSFSheet;  
  5. import org.apache.poi.xssf.usermodel.XSSFWorkbook;  
  6.   
  7. public class XlsxMain {  
  8.   
  9.   public static void main( String[] args) throws IOException {  
  10.     XlsxMain xlsxMain = new XlsxMain();  
  11.       
  12.     xlsxMain.readXlsx();  
  13.   }  
  14.   
  15.   private void readXlsx() throws IOException{  
  16.     String fileName = "D:\\excel\\xlsx_test.xlsx";  
  17.     XSSFWorkbook xssfWorkbook = new XSSFWorkbook( fileName);  
  18.       
  19.     // 循环工作表Sheet  
  20.     for(int numSheet = 0; numSheet < xssfWorkbook.getNumberOfSheets(); numSheet++){  
  21.       XSSFSheet xssfSheet = xssfWorkbook.getSheetAt( numSheet);  
  22.       if(xssfSheet == null){  
  23.         continue;  
  24.       }  
  25.         
  26.       // 循环行Row   
  27.       for(int rowNum = 0; rowNum <= xssfSheet.getLastRowNum(); rowNum++ ){  
  28.         XSSFRow xssfRow = xssfSheet.getRow( rowNum);  
  29.         if(xssfRow == null){  
  30.           continue;  
  31.         }  
  32.           
  33.         // 循环列Cell     
  34.         for(int cellNum = 0; cellNum <= xssfRow.getLastCellNum(); cellNum++){  
  35.           XSSFCell xssfCell = xssfRow.getCell( cellNum);  
  36.           if(xssfCell == null){  
  37.             continue;  
  38.           }  
  39.           System.out.print("   "+getValue(xssfCell));  
  40.         }  
  41.         System.out.println();  
  42.       }  
  43.     }  
  44.   }  
  45.     
  46.   @SuppressWarnings("static-access")  
  47.   private String getValue(XSSFCell xssfCell){  
  48.     if(xssfCell.getCellType() == xssfCell.CELL_TYPE_BOOLEAN){  
  49.       return String.valueOf( xssfCell.getBooleanCellValue());  
  50.     }else if(xssfCell.getCellType() == xssfCell.CELL_TYPE_NUMERIC){  
  51.       return String.valueOf( xssfCell.getNumericCellValue());  
  52.     }else{  
  53.       return String.valueOf( xssfCell.getStringCellValue());  
  54.     }  
  55.   }  
  56.     
  57. }  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值