導(dǎo)入excel蓝丙,讀取excel數(shù)據(jù)

第一種獲取sheet的方法

HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(this.getExcel()));
HSSFSheet sheet = wb.getSheetAt(0);

//this.getExcel()為上傳的excel文件
HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(this.getExcel()));
HSSFSheet sheet = wb.getSheetAt(0);
HSSFRow row = sheet.getRow(1);
Json jsonMsg = new Json();
if(row == null){
    jsonMsg.setSuccess(false);
    jsonMsg.setMsg("模板不規(guī)范,導(dǎo)入失敗!");
}else{
    String msg = getExcelContent(sheet);
        jsonMsg.setSuccess(true);
        jsonMsg.setMsg(msg);
}
this.writeJson(jsonMsg);
return NONE;

getExcelContent 為處理excel數(shù)據(jù)的方法

 private String getExcelContent(HSSFSheet sheet) {
       
    
        HSSFRow row;
     
        try {
            // 得到總行數(shù)
            int rowNum = sheet.getLastRowNum();
            // 正文內(nèi)容應(yīng)該從第四行開(kāi)始,第一行為表頭的標(biāo)題
            for (int i = 3; i <=rowNum; i++) {
                Grade grade = new Grade();
                row = sheet.getRow(i);
                if(row != null){

                    if(row.getCell(1) !=null){ // 身份證
                        Object [] objects = findIdByIdCard(row.getCell(1).toString() , this.clazzOpenId);
                        if(objects.length == 0){ //不存在該身份證號(hào)的報(bào)名信息
                            idcardNotFoundNum++;
                            continue;
                        }
                        Integer signDetailId = Integer.parseInt(objects[0].toString());
                        Integer personId = Integer.parseInt(objects[1].toString());
                        Integer clazzOpenId = this.clazzOpenId ;
                        grade.setPersonId(personId);
                        grade.setSignDetailId(signDetailId);
                        grade.setClazzOpenId(clazzOpenId);
                    }else{
                        idcardBlank++;
                        continue;
                    }


                    if(row.getCell(5) !=null && row.getCell(5).toString() != "" ){ // 分?jǐn)?shù)
                        String score = row.getCell(5).toString().trim();
                        if("缺考".equals(score)){
                            score = "-1";
                        }else if("作弊一".equals(score)){
                            score = "-2";
                        }else if("作弊二".equals(score)){
                            score = "-3";
                        }else if("免試".equals(score)){
                            score = "-4";
                        }
                        grade.setScore(Double.parseDouble(score));
                    }
                    if(StringUtils.isNotBlank(row.getCell(6).toString().trim())){ // 考試結(jié)果
                        String result = row.getCell(6).toString().trim();
                         if ("合格".equals(result)){
                            result = "1";
                             grade.setResult(Integer.parseInt(result));
                        }else if("不合格".equals(result)){
                            result = "0";
                             grade.setResult(Integer.parseInt(result));
                        }
                        grade.setStatus(RELEASE_NO);
                    }else{
                        grade.setStatus(RELEASE_NO);
                    }
                    if( grade.getPersonId() != null ){
                        Map<String , String> map = scoreManageDao.countByPersonId(grade.getPersonId() , this.clazzOpenId);
                        if(map.size() == 0 ){
                            grade.setCreateOperator(getLoginUser().getId().toString());
                            grade.setCreateTime(new Date());
                            scoreManageDao.save(grade);
                            successNum++;
                        }else{
                            if(map.get("id") != null ){
                                grade.setId(Integer.parseInt(map.get("id")));
                            }
                            grade.setUpdateOperator(getLoginUser().getId().toString());
                            grade.setUpdateTime(new Date());
                            scoreManageDao.update(grade);
                            updateNum++;
                        }
                    }
                }
            }
        }catch (Exception e) {
            e.printStackTrace();
        }
   
        return sb.toString();
    }

第二種獲取sheet的方法

File temp = null;
temp = new File(ExcelUploadFileUtil2.upload(file));
ExcelReader readerQuestions = null;
readerQuestions = ExcelUtil.getReader(temp, 0); //獲取第一個(gè)分表

 @RequestMapping(value = "/questions/",method = {RequestMethod.POST}, consumes = MediaType.ALL_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    public Result uploadQuestions(@CurrentAdmin UserAdminEntity admin, @RequestParam(value = "file", required = true) MultipartFile file) throws Exception {
        // 獲取封裝數(shù)據(jù)對(duì)象
        File temp = null;
        ExcelReader readerQuestions = null;
        ExcelReader readerOptions = null;
        List<String> rePath = null;
        if (file != null && !file.isEmpty()){
            try {
                temp = new File(ExcelUploadFileUtil2.upload(file));
                readerQuestions = ExcelUtil.getReader(temp, 0);   //獲取第一個(gè)分表
                readerOptions = ExcelUtil.getReader(temp, 1); //獲取第二個(gè)分表
                rePath = ExcelFileReadUtil.makePath(temp.getPath());  
            } catch (Exception e){
                e.printStackTrace();
                throw new FileUploadException("模板不正確");
            }

            // 插入試題
            List<Map> re = questionService.insertQuestionList(readerQuestions, admin.getUserName(), LocalUtil.create("q", new ArrayList<Questions>()).get());

            // 插入選項(xiàng)
            questionService.insertQuestionOptionsList(readerOptions, admin.getUserName(), LocalUtil.get("q", ArrayList.class), LocalUtil.create("o", new ArrayList<QuestionsOptions>()).get());

            // 插入附件
            questionService.insertQuestionOptionPhotoList(QuestionsFileVo.make(rePath), admin.getUserName(), LocalUtil.get("q", ArrayList.class), LocalUtil.get("o", ArrayList.class));

            // 清空緩存
            LocalUtil.remove("q");
            LocalUtil.remove("o");
            return new Result(200, "", re);
        }
        throw new FileUploadException("文件上傳失敗");
    }

處理表格數(shù)據(jù)

  /**
     * 添加題目多
     */
    public List<Map> insertQuestionList(ExcelReader reader, String name, List<Questions> rongQi) throws ParamException, ResultException, IOException, EmptyException {
        long pid = 0;
        // 讀取excel對(duì)象
        List<List<Object>> readAll = reader.read();
        for (int i = 0; i < readAll.size(); i++){
            if (i < 1){
                continue;
            }
            List<Object> reaa = readAll.get(i);
            try {
                if (reaa.get(7) == null || reaa.get(7).toString().equals("")){
                    continue;
                }
                Long rea = handler(reaa, pid, takeKnowledge(reaa.get(5)), name, rongQi);
                pid = rea;
            } catch (Exception e){
                e.printStackTrace();
                List<Map> rea = new ArrayList<>();
                rea.add(handlerResult(readAll.get(i), e.getMessage()));
                return rea;
            }
        }
        return new ArrayList<>();
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末矿酵,一起剝皮案震驚了整個(gè)濱河市只嚣,隨后出現(xiàn)的幾起案子腻贰,更是在濱河造成了極大的恐慌叹侄,老刑警劉巖巩搏,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異趾代,居然都是意外死亡贯底,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門撒强,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)禽捆,“玉大人,你說(shuō)我怎么就攤上這事飘哨∨呦耄” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵芽隆,是天一觀的道長(zhǎng)浊服。 經(jīng)常有香客問(wèn)我,道長(zhǎng)摆马,這世上最難降的妖魔是什么臼闻? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮囤采,結(jié)果婚禮上述呐,老公的妹妹穿的比我還像新娘。我一直安慰自己蕉毯,他們只是感情好乓搬,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著代虾,像睡著了一般进肯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上棉磨,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天江掩,我揣著相機(jī)與錄音,去河邊找鬼乘瓤。 笑死环形,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的衙傀。 我是一名探鬼主播抬吟,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼统抬!你這毒婦竟也來(lái)了火本?” 一聲冷哼從身側(cè)響起危队,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钙畔,沒(méi)想到半個(gè)月后茫陆,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡刃鳄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年盅弛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叔锐。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡挪鹏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出愉烙,到底是詐尸還是另有隱情讨盒,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布步责,位于F島的核電站返顺,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蔓肯。R本人自食惡果不足惜遂鹊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蔗包。 院中可真熱鬧秉扑,春花似錦、人聲如沸调限。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)耻矮。三九已至秦躯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間裆装,已是汗流浹背踱承。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留哨免,地道東北人勾扭。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像铁瞒,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子桅滋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

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