使用poi解析Excel

  使用poi来解析Excel的xls和xlsx。

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

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
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 XlsMain {

  public static void main( String[] args) throws IOException {
    XlsMain xlsMain = new XlsMain();
    
    xlsMain.readXls();
  }

  private void readXls() throws IOException{
    InputStream is = new FileInputStream( "D:\\excel\\xls_test2.xls");
    HSSFWorkbook hssfWorkbook = new HSSFWorkbook( is); 
    
    // 循环工作表Sheet
    for(int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++){
      HSSFSheet hssfSheet = hssfWorkbook.getSheetAt( numSheet);
      if(hssfSheet == null){
        continue;
      }
      
      // 循环行Row 
      for(int rowNum = 0; rowNum <= hssfSheet.getLastRowNum(); rowNum++){
        HSSFRow hssfRow = hssfSheet.getRow( rowNum);
        if(hssfRow == null){
          continue;
        }
        
        // 循环列Cell  
        for(int cellNum = 0; cellNum <= hssfRow.getLastCellNum(); cellNum++){
          HSSFCell hssfCell = hssfRow.getCell( cellNum);
          if(hssfCell == null){
            continue;
          }
          
          System.out.print("    " + getValue( hssfCell));
        }
        System.out.println();
      }
    }
  }
  
  @SuppressWarnings("static-access")
  private String getValue(HSSFCell hssfCell){
    if(hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN){
      return String.valueOf( hssfCell.getBooleanCellValue());
    }else if(hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC){
      return String.valueOf( hssfCell.getNumericCellValue());
    }else{
      return String.valueOf( hssfCell.getStringCellValue());
    }
  }
  
}



解析xlsx:
Java代码 复制代码  收藏代码
  1. package xlsx;   
  2.   
  3. import java.io.IOException;   
  4. import org.apache.poi.xssf.usermodel.XSSFCell;   
  5. import org.apache.poi.xssf.usermodel.XSSFRow;   
  6. import org.apache.poi.xssf.usermodel.XSSFSheet;   
  7. import org.apache.poi.xssf.usermodel.XSSFWorkbook;   
  8.   
  9. public class XlsxMain {   
  10.   
  11.   public static void main( String[] args) throws IOException {   
  12.     XlsxMain xlsxMain = new XlsxMain();   
  13.        
  14.     xlsxMain.readXlsx();   
  15.   }   
  16.   
  17.   private void readXlsx() throws IOException{   
  18.     String fileName = "D:\\excel\\xlsx_test.xlsx";   
  19.     XSSFWorkbook xssfWorkbook = new XSSFWorkbook( fileName);   
  20.        
  21.     // 循环工作表Sheet   
  22.     for(int numSheet = 0; numSheet < xssfWorkbook.getNumberOfSheets(); numSheet++){   
  23.       XSSFSheet xssfSheet = xssfWorkbook.getSheetAt( numSheet);   
  24.       if(xssfSheet == null){   
  25.         continue;   
  26.       }   
  27.          
  28.       // 循环行Row    
  29.       for(int rowNum = 0; rowNum <= xssfSheet.getLastRowNum(); rowNum++ ){   
  30.         XSSFRow xssfRow = xssfSheet.getRow( rowNum);   
  31.         if(xssfRow == null){   
  32.           continue;   
  33.         }   
  34.            
  35.         // 循环列Cell      
  36.         for(int cellNum = 0; cellNum <= xssfRow.getLastCellNum(); cellNum++){   
  37.           XSSFCell xssfCell = xssfRow.getCell( cellNum);   
  38.           if(xssfCell == null){   
  39.             continue;   
  40.           }   
  41.           System.out.print("   "+getValue(xssfCell));   
  42.         }   
  43.         System.out.println();   
  44.       }   
  45.     }   
  46.   }   
  47.      
  48.   @SuppressWarnings("static-access")   
  49.   private String getValue(XSSFCell xssfCell){   
  50.     if(xssfCell.getCellType() == xssfCell.CELL_TYPE_BOOLEAN){   
  51.       return String.valueOf( xssfCell.getBooleanCellValue());   
  52.     }else if(xssfCell.getCellType() == xssfCell.CELL_TYPE_NUMERIC){   
  53.       return String.valueOf( xssfCell.getNumericCellValue());   
  54.     }else{   
  55.       return String.valueOf( xssfCell.getStringCellValue());   
  56.     }   
  57.   }   
  58.      
  59. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
// 循环工作表Sheet for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) { //o--对应第一张工作表如默认情况下sheet1 hssfSheet = hssfWorkbook.getSheetAt(numSheet); //System.out.println("表明"+hssfSheet.getSheetName()); if (hssfSheet == null) { continue; } //首先获得第一行的数据 HSSFRow rowFirst=hssfSheet.getRow(0); // 循环行Row for (int rowNum = 1; rowNum <=hssfSheet.getLastRowNum(); rowNum++) {// //获取行对象 HSSFRow hssfRow = hssfSheet.getRow(rowNum); if(hssfRow!=null) { //构建comp对象 CompShows comp=new CompShows(); //初始化所有comp默认为1 comp.setTypeOfTransaction(1); //根据列单元格的名字规划数据 int t=hssfRow.getLastCellNum(); // System.out.println(t+"fffffffffffffsssssssssssss"); for(int i=0;i<t;i++) { //遍历根据i获得数据和列名 HSSFCell hcFirst=rowFirst.getCell(i); // System.out.println(getValueForString(hcFirst)+"========"); //if("客户帐号".equals(hssfrow)) //获得每一列的列名 HSSFCell hc=hssfRow.getCell(i); if("客户名称".equals(getValueForString(hcFirst).toString())||"户名".equals(getValueForString(hcFirst))||"交易户名".equals(getValueForString(hcFirst))) { //System.out.println("客户账号"+getValue(hc)); //表示该列数据存储的是账户名 comp.setName((String)getValueForString(hc)); }else if("账号".equals(getValueForString(hcFirst))||"客户帐号".equals(getValueForString(hcFirst))||"交易账号".equals(getValueForString(hcFirst))) { //表示该列数据存储的是账号 comp.setAccount((String)getValueForString(hc)); //System.out.println("账号"+getValue(hc)); }else if("交易日期".equals(getValueForString(hcFirst))||"交易时间".equals(getValueForString(hcFirst))) {
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值