1. 程式人生 > >POI操作Excel詳解,讀取xls和xlsx格式的文件

POI操作Excel詳解,讀取xls和xlsx格式的文件

shee xss split 類型 後綴 .sh lan xls lin

package org.ian.webutil; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; 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 ReadExcel { private static final Log log = LogFactory.getLog(ReadExcel.
class); /** * 判斷後綴分批入 */ private static void parseSUCCEXX(String realPath,String fileName){ String [] pfix= fileName.split("\\."); String suffix = pfix[pfix.length -1]; if( suffix!=null&&!suffix.equals("")&&suffix.equals(
"xls")){ System.out.println("xls"); // jxl方法可讀取.xls格式 jlxExcel(realPath,fileName); }else if(suffix .equals("xlsx")){ System.out.println("xlsx"); // poi方法可讀取Excel2007即.xlsx格式 poiExcel(realPath,fileName); } } /** * 讀取 xls JXL * @param realPath * @param fileName */ private static void jlxExcel(String realPath,String fileName){ //===============jlx方法================= try{ File fileDes = new File(realPath); InputStream str = new FileInputStream(fileDes); // 構造Workbook(工作薄)對象 Workbook rwb=Workbook.getWorkbook(str); Sheet rs=rwb.getSheet(0);//獲取第一張工作表 int rsRows=rs.getRows();//獲取Sheet表中所包含的總行數 int rsCols=rs.getColumns();//獲取Sheet表中所包含的總列數 log.info("========行========"+rsRows+"=====列========"+rsCols); for(int i=1;i<rsRows;i++){//讀取行 log.info("========執行第========"+i+"行"); for(int j=0;j<rsCols;j++){ log.info("========執行第========"+j+"列"); Cell coo=rs.getCell(j, i);//單元格定位列,再定位行 log.info("========coo========"+coo); String strc=coo.getContents();//讀取內容 log.info("========讀取內容strc========"+strc); System.out.println("文件"+fileName+"的內容為:"+strc); } } rwb.close(); }catch (FileNotFoundException e) { e.printStackTrace(); } catch (BiffException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } //==========讀取excel文件內容=結束===================== } /** * POI讀取 xlsx * @param realPath * @param fileName */ private static void poiExcel(String realPath,String fileName){ try{ File fileDes = new File(realPath); InputStream str = new FileInputStream(fileDes); XSSFWorkbook xwb = new XSSFWorkbook(str); //利用poi讀取excel文件流 XSSFSheet st = xwb.getSheetAt(0); //讀取sheet的第一個工作表 int rows=st.getLastRowNum();//總行數 int cols;//總列數 log.info("========行========"+rows); for(int i=0;i<rows;i++){ XSSFRow row=st.getRow(i);//讀取某一行數據 if(row!=null){ //獲取行中所有列數據 cols=row.getLastCellNum(); log.info("========行========"+rows+"=====列========"+cols); for(int j=0;j<cols;j++){ XSSFCell cell=row.getCell(j); if(cell==null){ System.out.print(" "); }else{ //判斷單元格的數據類型 switch (cell.getCellType()) { case XSSFCell.CELL_TYPE_NUMERIC: // 數字 System.out.print(cell.getNumericCellValue() + " "); break; case XSSFCell.CELL_TYPE_STRING: // 字符串 System.out.print(cell.getStringCellValue() + " "); break; case XSSFCell.CELL_TYPE_BOOLEAN: // Boolean System.out.println(cell.getBooleanCellValue() + " "); break; case XSSFCell.CELL_TYPE_FORMULA: // 公式 System.out.print(cell.getCellFormula() + " "); break; case XSSFCell.CELL_TYPE_BLANK: // 空值 System.out.println(""); break; case XSSFCell.CELL_TYPE_ERROR: // 故障 System.out.println("故障"); break; default: System.out.print("未知類型 "); break; } } } } } }catch(IOException e){ e.printStackTrace(); } } /** * test * @param args */ public static void main(String[] args) { String fileName = "banShot.xlsx"; String realPath = "d:/"+fileName; parseSUCCEXX(realPath, fileName); } }

POI操作Excel詳解,讀取xls和xlsx格式的文件