poi——讀取excel數據


單元格類型

讀取Excel數據

package com.java.test.poi;

import java.io.File;
import java.io.FileInputStream;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellValue;
import org.apache.poi.ss.usermodel.FormulaEvaluator;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class parseExcel {
    //  if(!wb.isSheetHidden(sheetnum)){}//判斷工作表sheet是否被隱藏,隱藏返回true,未被隱藏返回false
    //  if(!row.getZeroHeight()){}//判斷行是否隱藏,隱藏返回true
    public static void mainParseExcel() {
        //把所有文件種交易集合到一個list集合中
        String xlsxpath = "C:/Users/Desktop/1.xlsx";
        int startNum = 0;//從第幾個sheet頁開始解析
        /*解Excel*/
        Workbook wb = null;       //創建工作簿對象
        try{
            FileInputStream fi = new FileInputStream(new File(xlsxpath));
            wb = new XSSFWorkbook(fi);    //操作Excel2007的版本,擴展名是.xlsx//xlsm文件也可以兼容
            fi.close();//關閉輸入流
        } catch (Exception e){
            System.out.println(e);
        }
        int num = wb.getNumberOfSheets();//得到sheet的個數
        for(int sheetnum=startNum; sheetnum<num; sheetnum++){//行,列和sheet索引都是從0開始            
            if(!wb.isSheetHidden(sheetnum)){//判斷工作表是否被隱藏,隱藏返回true,未被隱藏返回false
                /**解sheet頁*/
                Sheet sheet = wb.getSheetAt(sheetnum);    //獲取給定索引處的Sheet對象。
                FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();    //先返回XSSF和HSSF對象,再創建一個用於計算公式單元格的對象
                int rowNum = sheet.getLastRowNum() + 1;    //取最后一行的行號
                /*雙for循環遍歷工作簿中單元格*/
                for(int i=0; i<rowNum; i++){    //行循環                
                    Row row = sheet.getRow(i);    //行對象
                    int cellNum = row.getLastCellNum();     //取最后一列列號

                        for(int j=0; j<cellNum; j++){    //列循環
                            Cell cell = row.getCell(Short.parseShort(j + ""));    //指定單元格
                            CellValue c = evaluator.evaluate(cell);    //單元格值對象
                            if(c != null){    //判斷單元格是否有值
                                System.out.println(c.getCellType());
                                System.out.println(c.getCellTypeEnum());
                                switch(c.getCellType()) {
                                    case STRING:
                                        String value = c.getStringValue();    //得到單元格值
                                        System.out.println("String:" + value);
                                        break;
                                    case NUMERIC:
                                        double  dvalue = c.getNumberValue(); //得到單元格內數字
                                        System.out.println("Double:" + dvalue);
                                        break;
                                    default:
                                        System.out.println("---");
                                }
                            }
                        }
                }
             
            }
        }
    }
    
    
    public static void main(String[] args) {
        
        mainParseExcel();
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM