java上傳excel表格并讀取數(shù)據(jù)返回到前臺

如果你對里面的代碼不熟悉不知道的話,建議先瀏覽一遍代碼再拿去用糠悯,
這里我介紹一下這個過程的思路:

1、定義變量那些就不說了 盏道,
2稍浆、首先是上傳文件并保存的代碼
3、根據(jù)excel表的路徑來讀取文件猜嘱,之后便是先獲取最大行數(shù)和最大列數(shù)衅枫,然后根據(jù)最大行數(shù)和最大列數(shù)來循環(huán)表格。循環(huán)行的過程中循環(huán)列朗伶,獲取到一行中所有的列數(shù)據(jù)再對數(shù)據(jù)進行處理弦撩,根據(jù)需求給每一個列的數(shù)據(jù)分配一個名字,也是k-y论皆,然后再進行存儲益楼。

!点晴!反正代碼下面感凤,不懂可以私信,或者自己打斷點調(diào)試粒督,看兩遍就會理解里面的內(nèi)容了

@RequestMapping(value = "/ImportExcel")
    @ResponseBody
    public JSONObject ImportExcel(@RequestParam(value = "file", required = false) MultipartFile file) throws Exception {
        //這里創(chuàng)建json對象陪竿,實測用map的話,json數(shù)據(jù)會有問題  
        JSONObject jsonMap = new JSONObject(); 
        Sheet sheet = null;   //excel的表
        Row row = null;   //行
        String cellData = null; //列數(shù)據(jù)
//以上是定義一些要用的變量==========================================================
        //講選擇的文件上傳到upload目錄
        String fileName = file.getOriginalFilename();
             // 獲取上傳目錄的路徑
        String path = request.getRealPath("/upload");// 獲取上傳文件路徑
        String prefix = fileName.substring(fileName
                    .lastIndexOf('.') + 1);// 獲取文件后綴名
        Date time = new Date();
        String filename = time.getYear() + "" + time.getMonth() + ""
                    + time.getDay() + "" + time.getHours() + "" + time.getMinutes()
                    + "" + time.getSeconds() + "";
         File targetFile = new File(path, filename + "."
                    + prefix);
         //保存文件
         file.transferTo(targetFile);
//以上先上傳并把文件保存到服務(wù)器==========================================================


         // 獲取上傳目錄的路徑
        Workbook wb   =EXCELBean.readExcel(path+"\\"+filename + "." + prefix); 
        if(wb != null){ 
            //用來存放表中一行的數(shù)據(jù) 
            List<JSONObject> listMap = new ArrayList<JSONObject>(); 
            //獲取第一個sheet 
            sheet = wb.getSheetAt(0); 
            //獲取最大行數(shù) 
            int rownum = sheet.getPhysicalNumberOfRows(); 
            //獲取第一行 
            row = sheet.getRow(0); 
            //獲取最大列數(shù) 
            int colnum = row.getPhysicalNumberOfCells(); 
            //循環(huán)行 
            for (int i = 1; i < rownum; i++) { 
              row = sheet.getRow(i); 
              if(row !=null){ 
                //創(chuàng)建list對象接收讀出的excel一行中列的數(shù)據(jù) 
                List<String> list = new ArrayList<String>(); 
                //循環(huán)列 
                for (int j=0;j<colnum;j++){ 
                  cellData = (String) EXCELBean.getCellFormatValue(row.getCell(j)); 
                  list.add(cellData); 
                } 

                  //這里可以定義多個JSONObject來對數(shù)據(jù)進行處理嵌套等操作屠橄,最后再儲存到listMap中族跛,
                    JSONObject jsonObject2 = new JSONObject(); 
                    jsonObject2.put("skvDorCode0",list.get(0)); 
                    jsonObject2.put("skvDorCode1",list.get(1)); 
                    jsonObject2.put("skvDorCode2",list.get(2)); 
                    jsonObject2.put("skvDorCode3",list.get(3)); 
                    jsonObject2.put("skvDorCode4",list.get(4)); 
                    jsonObject2.put("skvDorCode5",list.get(5)); 
                    
              
                    /*//創(chuàng)建jsonBmt對象,進一步把以上對象嵌套 
                    JSONObject jsonBmt = new JSONObject(); 
                    //把以上幾個嵌套入第一層對象中 

                    jsonObject2.put("businessMixTypes",jsonBmt); */
                   
                    listMap.add(jsonObject2);  
              }else{ 
                break; 
              }        
            }// end for row 
                //最外層加個key-gridData 
                jsonMap.put("msg", "上傳數(shù)據(jù)成功"); 
                jsonMap.put("gridData", listMap); 
                System.out.println(jsonMap);    
                return jsonMap;
          } 

        jsonMap.put("msg", "上傳數(shù)據(jù)為空"); 
        return jsonMap;
        
    }
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锐墙,一起剝皮案震驚了整個濱河市礁哄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌贮匕,老刑警劉巖姐仅,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡掏膏,警方通過查閱死者的電腦和手機劳翰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來馒疹,“玉大人佳簸,你說我怎么就攤上這事∮北洌” “怎么了生均?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長腥刹。 經(jīng)常有香客問我马胧,道長,這世上最難降的妖魔是什么衔峰? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任佩脊,我火速辦了婚禮,結(jié)果婚禮上垫卤,老公的妹妹穿的比我還像新娘威彰。我一直安慰自己,他們只是感情好穴肘,可當(dāng)我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布歇盼。 她就那樣靜靜地躺著,像睡著了一般评抚。 火紅的嫁衣襯著肌膚如雪豹缀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天盈咳,我揣著相機與錄音耿眉,去河邊找鬼。 笑死鱼响,一個胖子當(dāng)著我的面吹牛鸣剪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播丈积,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼筐骇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了江滨?” 一聲冷哼從身側(cè)響起铛纬,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎唬滑,沒想到半個月后告唆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體棺弊,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡峭范,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年策幼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扛禽。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡懂牧,死狀恐怖侈净,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情僧凤,我是刑警寧澤畜侦,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站躯保,受9級特大地震影響旋膳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜途事,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一溺忧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧盯孙,春花似錦、人聲如沸祟滴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽垄懂。三九已至骑晶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間草慧,已是汗流浹背桶蛔。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留漫谷,地道東北人仔雷。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像舔示,于是被迫代替她去往敵國和親碟婆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 1901年1月22日惕稻,南面六秩有余的維多利亞女王以八十一歲遐齡溘然長逝竖共,其子威爾士親王當(dāng)了多年王儲,終于得登大寶俺祠,...
    tnoyh閱讀 1,111評論 0 3
  • 四川樂山大佛肺然,又稱凌云大佛,是世界最大的摩崖石刻彌勒坐像匣沼。 大佛通高71米狰挡,位于四川省樂山市,開鑿于公元713年释涛,...
    云沁2018閱讀 292評論 2 12
  • 我與你 不過是在生命的幾個結(jié)點 來一場必要又不必要的偶遇 少一句 你好 再見 只些許回憶 只零星情緒 一場雨都沒落...
    有心L閱讀 123評論 0 2