亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

java 使用POI批量導入excel數據

2019-11-15 00:55:12
字體:
來源:轉載
供稿:網友
java 使用POI批量導入Excel數據

一、定義

  Apache POI是Apache軟件基金會的開放源碼函式庫,POI提供API給Java程序對Microsoft Office格式檔案讀和寫的功能。

二、所需jar包

三、簡單的一個讀取excel的demo

1、讀取文件方法

     /**     * 讀取出filePath中的所有數據信息     * @param filePath excel文件的絕對路徑     *      */        public static void getDataFromExcel(String filePath)    {        //String filePath = "E://123.xlsx";                //判斷是否為excel類型文件        if(!filePath.endsWith(".xls")&&!filePath.endsWith(".xlsx"))        {            System.out.

2、測試

public static void main(String[] args)     {                getDataFromExcel("E:"+ File.separator +"123.xlsx");    }

3、原始數據

4、結果

名字:A1,經緯度:1名字:A2,經緯度:2名字:A3,經緯度:3名字:A4,經緯度:4名字:A5,經緯度:5名字:A6,經緯度:6名字:A7,經緯度:7名字:A8,經緯度:8名字:A9,經緯度:9名字:A10,經緯度:10名字:A11,經緯度:11

四、注意事項

1、運用多態,excel主要有.xls結尾(2003版本)和. xlsx(2007版本)兩種類型結尾的文件,分別需要用HSSFWorkbook對象對.xls文件進行讀取,用XSSFWorkbook對象對.xlsx文件進行讀取,直接使用他們共同的父類Workbook進行初始化對象有利于代碼的易用性。

2、通過流的方式初始化工作簿對象(Workbook),可以通過new XSSFWorkbook(文件絕對路徑)和new XSSFWorkbook(輸入流)兩種方式初始化對象,但是假如我們只是通過修改.xls文件的后綴名為.xlsx,這樣子當我們用new XSSFWorkbook(文件絕對路徑)來讀取文件的時候就會報錯,因為他本身就不是一個2007版本的excel類型的文件,讀取會報錯;假如我們是通過流的方式的話,可以避免這種情況,我們即使你修改了文件的后綴名,我們依然在初始化的時候能獲取到該對象是.xls類型文件,使用HSSFWorkbook對象進行處理,即能得出正確的結果。

五、增強版

  添加了判斷表頭是否符合規范,允許表頭對象的位置不同。進行了一定的解耦合。

    /**     *          * @param cell 一個單元格的對象     * @return 返回該單元格相應的類型的值     */    public static Object getRightTypeCell(Cell cell){            Object object = null;        switch(cell.getCellType())        {            case Cell.CELL_TYPE_STRING :            {                object=cell.getStringCellValue();                break;            }            case Cell.CELL_TYPE_NUMERIC :            {                cell.setCellType(Cell.CELL_TYPE_NUMERIC);                object=cell.getNumericCellValue();                break;            }                            case Cell.CELL_TYPE_FORMULA :            {                cell.setCellType(Cell.CELL_TYPE_NUMERIC);                object=cell.getNumericCellValue();                break;            }                        case Cell.CELL_TYPE_BLANK :            {                cell.setCellType(Cell.CELL_TYPE_BLANK);                object=cell.getStringCellValue();                break;            }        }        return object;    }    

/**     * 讀取出filePath中的所有數據信息     * @param filePath excel文件的絕對路徑     *      */        public static void getDataFromExcel2(String filePath)    {        List<Map<String,Integer>> list = new ArrayList<Map<String, Integer>>();        //判斷是否為excel類型文件        if(!filePath.endsWith(".xls")&&!filePath.endsWith(".xlsx"))        {            System.out.println("文件不是excel類型");        }                FileInputStream fis =null;        Workbook wookbook = null;        int flag = 0;                try        {            //獲取一個絕對地址的流              fis = new FileInputStream(filePath);        }        catch(Exception e)        {            e.printStackTrace();        }               try         {            //2003版本的excel,用.xls結尾            wookbook = new HSSFWorkbook(fis);//得到工作簿                     }         catch (Exception ex)         {            //ex.printStackTrace();            try            {                //2007版本的excel,用.xlsx結尾                                wookbook = new XSSFWorkbook(filePath);//得到工作簿            } catch (IOException e)            {                // TODO Auto-generated catch block                e.printStackTrace();            }        }                //得到一個工作表        Sheet sheet = wookbook.getSheetAt(0);                //獲得表頭        Row rowHead = sheet.getRow(0);              //根據不同的data放置不同的表頭        Map<Object,Integer> headMap = new HashMap<Object, Integer>();                        //判斷表頭是否合格  ------------------------這里看你有多少列        if(rowHead.getPhysicalNumberOfCells() != 2)        {            System.out.println("表頭列數與要導入的數據庫不對應");        }                try        {            //----------------這里根據你的表格有多少列            while (flag < 2)            {                Cell cell = rowHead.getCell(flag);                if (getRightTypeCell(cell).toString().equals("基站名"))                {                    headMap.put("jizhan", flag);                }                if (getRightTypeCell(cell).toString().equals("經緯度"))                {                    headMap.put("jingweidu", flag);                }                flag++;            }        } catch (Exception e)        {            e.printStackTrace();            System.out.println("表頭不合規范,請修改后重新導入");        }                        //獲得數據的總行數        int totalRowNum = sheet.getLastRowNum();                                //要獲得屬性        String name = "";        double latitude = 0;                if(0 == totalRowNum)        {            System.out.println("Excel內沒有數據!");        }                Cell cell_1 = null,cell_2 = null;               //獲得所有數據        for(int i = 1 ; i <= totalRowNum ; i++)        {            //獲得第i行對象            Row row = sheet.getRow(i);                        try            {                cell_1 = row.getCell(headMap.get("jizhan"));                cell_2 = row.getCell(headMap.get("jingweidu"));            } catch (Exception e)            {                e.printStackTrace();                System.out.println("獲取單元格錯誤");            }                        try            {                //基站                name = (String) getRightTypeCell(cell_1);                //經緯度                latitude = (Double) getRightTypeCell(cell_2);            } catch (ClassCastException e)            {                e.printStackTrace();                System.out.println("數據不全是數字或全部是文字!");            }            System.out.println("名字:"+name+",經緯度:"+latitude);                    }    }    

異常情況:

應將下面這段代碼

try         {            //2003版本的excel,用.xls結尾            wookbook = new HSSFWorkbook(fis);//得到工作簿                     }         catch (Exception ex)         {            //ex.printStackTrace();            try            {                //2007版本的excel,用.xlsx結尾                                wookbook = new XSSFWorkbook(fis);//得到工作簿            } catch (IOException e)            {                // TODO Auto-generated catch block                e.printStackTrace();            }        }

改為:

        try         {            //2003版本的excel,用.xls結尾            wookbook = new HSSFWorkbook(fis);//得到工作簿                     }         catch (Exception ex)         {            //ex.printStackTrace();            try            {                //這里需要重新獲取流對象,因為前面的異常導致了流的關閉—————————————————————————————加了這一行                 fis = new FileInputStream(filePath);                //2007版本的excel,用.xlsx結尾                                wookbook = new XSSFWorkbook(filePath);//得到工作簿            } catch (IOException e)            {                // TODO Auto-generated catch block                e.printStackTrace();            }        }

解析:因為前面異常導致了流的關閉,所以需要重新創建一個流對象。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕亚洲在线| 久热国产精品视频| 亚洲国内精品在线| 成人精品aaaa网站| 国产在线精品成人一区二区三区| 亚洲国产成人在线播放| 日韩在线免费高清视频| 另类图片亚洲另类| 欧美日韩在线观看视频小说| 国产精品夫妻激情| 成人激情视频免费在线| 久久久久久久国产| 91色p视频在线| 久久久久久欧美| 亚洲精品久久久久中文字幕二区| 最近2019年中文视频免费在线观看| 日韩女优在线播放| 欧美小视频在线| 欧美日韩爱爱视频| 国产热re99久久6国产精品| 亚洲情综合五月天| 国产精品久久久久久久久久ktv| 日韩欧美精品中文字幕| 日韩亚洲一区二区| 国产欧美日韩视频| 国产成人一区三区| 精品国产精品自拍| 久久久综合免费视频| 91精品久久久久久久久久久久久| 久久全国免费视频| 国产精品网站入口| 欧美国产日韩一区二区在线观看| 久久伊人91精品综合网站| 精品精品国产国产自在线| 亚洲男人天堂2019| 亚洲图片在线综合| 在线视频免费一区二区| 免费91麻豆精品国产自产在线观看| 欧美精品福利在线| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲影视九九影院在线观看| 欧美www在线| 久久这里有精品视频| 欧美天天综合色影久久精品| 亚洲夜晚福利在线观看| 国产亚洲精品久久久优势| www欧美日韩| 国产剧情久久久久久| 在线午夜精品自拍| 国产一区视频在线播放| 国精产品一区一区三区有限在线| 欧美激情极品视频| 在线成人激情黄色| 国产精品com| 日韩最新av在线| 国外成人性视频| 亚洲欧美精品在线| 日韩高清a**址| 亚洲图片制服诱惑| 精品无人区乱码1区2区3区在线| 成人做爰www免费看视频网站| 国产精品自拍网| 成人精品久久久| 亚洲欧美日本精品| 亚洲免费福利视频| 91免费视频国产| 精品视频www| 美女国内精品自产拍在线播放| 亚洲一区二区久久久| 97国产suv精品一区二区62| 日韩女优人人人人射在线视频| 日韩精品视频在线播放| 岛国av一区二区在线在线观看| 欧美日韩另类字幕中文| 久久久免费在线观看| 欧美黑人一级爽快片淫片高清| 日韩成人在线网站| 欧美成年人网站| 欧美日韩亚洲高清| 久久精品国产亚洲精品2020| 中文字幕成人精品久久不卡| 亚洲精品www久久久| 国产一区二区三区四区福利| 午夜欧美不卡精品aaaaa| 国产在线视频欧美| 海角国产乱辈乱精品视频| 欧美中文字幕视频在线观看| 91中文字幕在线| 久久免费国产精品1| 成人中文字幕+乱码+中文字幕| 国产精品私拍pans大尺度在线| 欧美精品在线网站| 国产亚洲欧美日韩美女| 国内成人精品一区| 国产69精品久久久| 久久精品2019中文字幕| 欧美性xxxxx极品| 欧美激情精品久久久久久黑人| 日韩在线中文字幕| 欧美疯狂xxxx大交乱88av| 91美女片黄在线观| 中文字幕最新精品| 日韩欧美在线看| 日韩精品极品在线观看播放免费视频| 国产精品海角社区在线观看| 国产亚洲精品91在线| 久久69精品久久久久久久电影好| 欧美疯狂xxxx大交乱88av| 久久中国妇女中文字幕| 色妞色视频一区二区三区四区| 色系列之999| 国产日韩欧美在线| 久热爱精品视频线路一| 成人情趣片在线观看免费| 色婷婷av一区二区三区在线观看| 成人午夜在线影院| 少妇av一区二区三区| 欧美大全免费观看电视剧大泉洋| 91av中文字幕| 国产精品偷伦免费视频观看的| 久久男人资源视频| 国产精品视频精品视频| 久青草国产97香蕉在线视频| 精品一区二区电影| 亚洲图片制服诱惑| 国产欧美一区二区三区四区| 亚洲欧美精品中文字幕在线| 亚洲成年网站在线观看| 日本在线观看天堂男亚洲| 在线电影欧美日韩一区二区私密| 亚洲精品国产福利| 色悠久久久久综合先锋影音下载| 欧美性受xxx| 高潮白浆女日韩av免费看| 国产色视频一区| 久久国产精品免费视频| 成人黄色av网| 国产日本欧美一区二区三区在线| 主播福利视频一区| 中文字幕亚洲情99在线| 成人午夜在线影院| 欧美色另类天堂2015| 亚洲欧美日韩一区二区在线| 亚洲福利视频网| 日韩不卡在线观看| 欧美另类在线播放| 播播国产欧美激情| 日本国产高清不卡| 色妞欧美日韩在线| 国产suv精品一区二区| 国产亚洲精品美女久久久久| 欧美激情一二三| 亚洲人精选亚洲人成在线| 日韩免费观看高清| 91在线免费视频| 国产丝袜精品第一页| 国产高清在线不卡| www.xxxx欧美| 久久精品视频亚洲| 国产午夜精品一区理论片飘花| 亚洲女同性videos| 一本色道久久88亚洲综合88| 狠狠操狠狠色综合网| 欧美电影免费播放|