成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

java使用poi讀取excel文檔的一種解決方案

legendaryedu / 2067人閱讀

摘要:本人在學(xué)習(xí)使用的過程中,需要驗(yàn)證一下表格里面的數(shù)據(jù)是否與數(shù)據(jù)庫(kù)中的數(shù)據(jù)相等。上網(wǎng)看了一下資料自己寫了一個(gè)讀取文檔的方法,驗(yàn)證數(shù)據(jù)庫(kù)的方法暫時(shí)還沒寫,自?shī)首詷?,只能抽時(shí)間了?,F(xiàn)在把讀取的方法分享出來(lái)。在讀取行數(shù)據(jù)的時(shí)候先轉(zhuǎn)換了一下格式。

本人在學(xué)習(xí)使用java的過程中,需要驗(yàn)證一下excel表格里面的數(shù)據(jù)是否與數(shù)據(jù)庫(kù)中的數(shù)據(jù)相等。由于數(shù)據(jù)太多,故想著用java讀取excel數(shù)據(jù)再去數(shù)據(jù)庫(kù)驗(yàn)證。上網(wǎng)看了一下資料自己寫了一個(gè)讀取excel文檔的方法,驗(yàn)證數(shù)據(jù)庫(kù)的方法暫時(shí)還沒寫,自?shī)首詷罚荒艹闀r(shí)間了?,F(xiàn)在把讀取excel的方法分享出來(lái)。

    //讀取excel文檔,除第一行為標(biāo)題外內(nèi)容為數(shù)字
    public static List>> readExcel(File filepath) throws Exception{
        /*首先判斷文件是否存在
         * 在判斷文件類型,xls還是xlsx
         */
        if (!filepath.exists()) {
            output("文件不存在!");
            }
        String  filename = filepath.toString();//轉(zhuǎn)化為string類型
        String fileType = filename.substring(filename.lastIndexOf(".") + 1, filename.length());//提取文件名后綴
        InputStream is = null;
        Workbook wb = null;
        try {
            is = new FileInputStream(filepath);
            if (fileType.equals("xls")) {
                wb = new HSSFWorkbook(is);
                } else if (fileType.equals("xlsx")) {
                    wb = new XSSFWorkbook(is);
                    } else {
                        output("文件名錯(cuò)誤!");
                        }
            //新建集合,考慮到要用value值去查詢數(shù)據(jù)庫(kù),所以value設(shè)置為string類型
            List>> result = new ArrayList>>();
            int sheetSize = wb.getNumberOfSheets();//獲取表格的個(gè)數(shù)
            for (int i = 0; i < sheetSize; i++) {//遍歷所有表格
                Sheet sheet = wb.getSheetAt(i);
                List> sheetList = new ArrayList>();
                List titles = new ArrayList();//放置所有的標(biāo)題
                int rowSize = sheet.getLastRowNum() + 1;//此處getLastRowNum()方法獲取的行數(shù)從0開始,故要+1
                for (int j = 0; j < rowSize; j++) {//遍歷所有行
                    Row row = sheet.getRow(j);
                    if (row == null) {//略過空行
                        continue;
                        }
                    int cellSize = row.getLastCellNum();//獲取列數(shù)
                    if (j == 0) {//第一行是標(biāo)題行
                        for (int k = 0; k < cellSize; k++) {//添加到標(biāo)題集合中
                            Cell cell = row.getCell(k);
                            titles.add(cell.toString());
                            }
                        } else {//其他行是數(shù)據(jù)行,為數(shù)字
                            Map rowMap = new HashMap();//保存一行的數(shù)據(jù)
                            for (int k = 0; k < titles.size(); k++) {//遍歷保存此行數(shù)據(jù)
                                Cell cell = row.getCell(k);
                                String key = titles.get(k);
                                String value = null;
                                if (cell != null) {
                                    /*這里因?yàn)樽x取excel數(shù)據(jù)默認(rèn)值是double類型的,但我的數(shù)據(jù)都是整數(shù),為了方便先進(jìn)行一次轉(zhuǎn)換
                                     * 先判斷數(shù)據(jù)類型,然后先轉(zhuǎn)換然后在復(fù)制給value
                                     * 數(shù)值類型是0,字符串類型是1,公式型是2,空值是3,布爾值4,錯(cuò)誤5
                                     */
                                    if (row.getCell(k).getCellType() == 0) {
                                        value =(int) row.getCell(k).getNumericCellValue()+"";
                                        }else {
                                            value = cell.toString();//轉(zhuǎn)換成string賦值給value
                                            }
                                    }
                                rowMap.put(key, value);//把數(shù)據(jù)存入map集合
                                }
                            sheetList.add(rowMap);//把存好行的數(shù)據(jù)存入表格的集合中
                            }
                    }
                result.add(sheetList);//把表格的數(shù)據(jù)存到excel的集合中
                }
            return result;
            } catch (FileNotFoundException e) {
                throw e;
                } finally {
                    if (is != null) {
                        is.close();
                        }
                    }
        }

方法的思路是從網(wǎng)上看來(lái)的,中間把代碼敲了一遍,發(fā)現(xiàn)很多地方不太對(duì),不知道是不是因?yàn)槟攴菥眠h(yuǎn)的原因。這個(gè)方法我做了一些自己的優(yōu)化,輸入?yún)?shù)那個(gè)地方我改成了file類型,判斷了一下文件是否存在。在讀取行數(shù)據(jù)的時(shí)候先轉(zhuǎn)換了一下格式。中文的注釋,我也自己重新寫了一遍。希望能對(duì)你有所幫助。

一起來(lái)~FunTester

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/75840.html

相關(guān)文章

  • java 導(dǎo)出 excel 最佳實(shí)踐,java 大文件 excel 避免OOM(內(nèi)存溢出) exce

    摘要:消費(fèi)之后,多線程處理文件導(dǎo)出,生成文件后上傳到等文件服務(wù)器。前端直接查詢并且展現(xiàn)對(duì)應(yīng)的任務(wù)執(zhí)行列表,去等文件服務(wù)器下載文件即可。這客戶體驗(yàn)不友好,而且網(wǎng)絡(luò)傳輸,系統(tǒng)占用多種問題。拓展閱讀導(dǎo)出最佳實(shí)踐框架 產(chǎn)品需求 產(chǎn)品經(jīng)理需要導(dǎo)出一個(gè)頁(yè)面的所有的信息到 EXCEL 文件。 需求分析 對(duì)于 excel 導(dǎo)出,是一個(gè)很常見的需求。 最常見的解決方案就是使用 poi 直接同步導(dǎo)出一個(gè) exc...

    K_B_Z 評(píng)論0 收藏0
  • 使用ApachePOI生成XLSX格式Excel文檔大數(shù)據(jù)量導(dǎo)出

    摘要:最近在做使用進(jìn)行大數(shù)據(jù)量導(dǎo)出,現(xiàn)在把其整理成工具類供大家參考。版本增加了前綴為相關(guān)的類,主要用于大數(shù)據(jù)量的寫入與讀取。 最近在做使用POI進(jìn)行大數(shù)據(jù)量導(dǎo)出,現(xiàn)在把其整理成工具類供大家參考。Apache POI 3.8版本增加了前綴為SXSSF相關(guān)的類,主要用于大數(shù)據(jù)量的寫入與讀取。關(guān)于ApachePOI導(dǎo)出Excel基本的使用我這里就不詳解了,具體參考: Apache POI官方網(wǎng)站...

    Shihira 評(píng)論0 收藏0
  • POI Sax 事件驅(qū)動(dòng)解析Excel2007文件(較大數(shù)據(jù)量的讀存導(dǎo)出)

    摘要:方式解析全稱,它是一個(gè)接口,也是一個(gè)軟件包。另外,推模型可用于廣播環(huán)境,能夠同時(shí)注冊(cè)多個(gè),并行接收事件,而不是在一個(gè)管道中一個(gè)接一個(gè)地進(jìn)行處理。這些語(yǔ)法分析器是最靈活的,因?yàn)樗鼈冞€支持。 xcel2007版本的代碼如下,本文主要是用于POI解析大文件Excel容易出現(xiàn)內(nèi)存溢出的現(xiàn)象而提出解決方案,故此解決了大數(shù)據(jù)量的Excel文件解析的難度,在此拿出來(lái)貢獻(xiàn)給大家,謝謝! 1.Offic...

    cod7ce 評(píng)論0 收藏0
  • 慕課網(wǎng)_《解密JAVA實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出》學(xué)習(xí)總結(jié)

    時(shí)間:2017年07月06日星期四說(shuō)明:本文部分內(nèi)容均來(lái)自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)源碼:無(wú)學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 預(yù)備知識(shí) 基礎(chǔ)知識(shí) struts2框架(上傳下載功能) xml解析技術(shù)(導(dǎo)入模板) JQuery EasyUI(前臺(tái)美觀) 課程目錄 實(shí)現(xiàn)方式 定制導(dǎo)入模版 導(dǎo)入文件 導(dǎo)...

    enrecul101 評(píng)論0 收藏0
  • POI讀取文件的最佳實(shí)踐

    摘要:我最近做的一個(gè)工具就是讀取計(jì)算機(jī)中的以及文件。經(jīng)常在讀取某些特別大的文件的時(shí)候都會(huì)帶來(lái)一個(gè)內(nèi)存溢出的問題。以上,就是我在使用讀取文件的一些探索和發(fā)現(xiàn),希望對(duì)你能有所幫助。 POI是 Apache 旗下一款讀寫微軟家文檔聲名顯赫的類庫(kù)。應(yīng)該很多人在做報(bào)表的導(dǎo)出,或者創(chuàng)建 word 文檔以及讀取之類的都是用過 POI。POI 也的確對(duì)于這些操作帶來(lái)很大的便利性。我最近做的一個(gè)工具就是讀取計(jì)...

    bingchen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<