zoukankan      html  css  js  c++  java
  • POI操作Excel详解,读取xls和xlsx格式的文件

    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);
             
        }
     
    }
  • 相关阅读:
    【C++】深度探索C++对象模型读书笔记--关于对象(Object Lessons)
    【操作系统】调度算法
    【vim】vim常用命令
    【linux】linux的数据流重定向
    以太网帧,IP,TCP,UDP首部结构
    IPv4编址及子网划分
    【计算机网络】计算机网络模型
    【计算机网络】NAT:网络地址转换
    【设计模式】C++中的单例模式
    (转)linux查找技巧: find grep xargs
  • 原文地址:https://www.cnblogs.com/muliu/p/6812347.html
Copyright © 2011-2022 走看看