首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

施用poi解析Excel

2012-10-08 
使用poi解析Excel使用poi来解析Excel的xls和xlsx。解析xls:package xlsimport java.io.FileInputStreamim

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

解析xls:

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:
package xlsx;import java.io.IOException;import org.apache.poi.xssf.usermodel.XSSFCell;import org.apache.poi.xssf.usermodel.XSSFRow;import org.apache.poi.xssf.usermodel.XSSFSheet;import org.apache.poi.xssf.usermodel.XSSFWorkbook;public class XlsxMain {  public static void main( String[] args) throws IOException {    XlsxMain xlsxMain = new XlsxMain();        xlsxMain.readXlsx();  }  private void readXlsx() throws IOException{    String fileName = "D:\\excel\\xlsx_test.xlsx";    XSSFWorkbook xssfWorkbook = new XSSFWorkbook( fileName);        // 循环工作表Sheet    for(int numSheet = 0; numSheet < xssfWorkbook.getNumberOfSheets(); numSheet++){      XSSFSheet xssfSheet = xssfWorkbook.getSheetAt( numSheet);      if(xssfSheet == null){        continue;      }            // 循环行Row       for(int rowNum = 0; rowNum <= xssfSheet.getLastRowNum(); rowNum++ ){        XSSFRow xssfRow = xssfSheet.getRow( rowNum);        if(xssfRow == null){          continue;        }                // 循环列Cell           for(int cellNum = 0; cellNum <= xssfRow.getLastCellNum(); cellNum++){          XSSFCell xssfCell = xssfRow.getCell( cellNum);          if(xssfCell == null){            continue;          }          System.out.print("   "+getValue(xssfCell));        }        System.out.println();      }    }  }    @SuppressWarnings("static-access")  private String getValue(XSSFCell xssfCell){    if(xssfCell.getCellType() == xssfCell.CELL_TYPE_BOOLEAN){      return String.valueOf( xssfCell.getBooleanCellValue());    }else if(xssfCell.getCellType() == xssfCell.CELL_TYPE_NUMERIC){      return String.valueOf( xssfCell.getNumericCellValue());    }else{      return String.valueOf( xssfCell.getStringCellValue());    }  }  }
;
}

if(POIFSFileSystem.hasPOIFSHeader(inp)) {
return new HSSFWorkbook(inp);
}
if(POIXMLDocument.hasOOXMLHeader(inp)) {
return new XSSFWorkbook(OPCPackage.open(inp));
}
throw new IllegalArgumentException("Your InputStream was neither an OLE2 stream, nor an OOXML stream");
}
}

热点排行