spring mvcはexcelからデータを導入します.


問題のように、excelからデータベースにデータを導入して、サポートします.xlsと.xlsxの拡張子です.poiを使っています多くは言いません.具体的なコードは以下の通りです.
/** *   excel   * @param tableId           id * @return       ,            * @author zhengjiang * @Time 2016 3 8  */
    @RequestMapping("/uploadExcel/{tableId}")
    @ResponseBody
    public Object uploadExcel(@PathVariable String tableId){
        try{
            CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
            if(multipartResolver.isMultipart(request))
            {
                MultipartHttpServletRequest multiRequest = multipartResolver.resolveMultipart(request);
                Iterator<String> iter = multiRequest.getFileNames();
                while (iter.hasNext())
                {
                    int pre = (int) System.currentTimeMillis();
                    //      
                    MultipartFile file = multiRequest.getFile(iter.next());
                    if (file != null) {
                        return this.readExcel(file.getInputStream(), tableId);
                    }
                    else
                    {
                        return new Object(){public boolean success = false;public String url = "";public String msg = "      "; };
                    }
                }
            }
            return new Object(){public boolean success = false;public String url = "";public String msg = "      "; };
        }
        catch (Exception e) {
            return e;
        }
    }

    /** *  excel           * @param tableId           id * @return       ,            * @author zhengjiang * @Time 2016 3 15  */
    private Object readExcel(InputStream is,String tableId){
        try{
            String tableName = this.getTableNameByTable(tableId);
            HashMap map = this.getTableFieldsByTableId(tableId);
            Workbook wb = this.create(is);
            Sheet sheet = wb.getSheetAt(0);
            //      
            if(tableName == null || tableName == "")
            {
                return new Object(){public boolean success = false;public String msg = "     id    "; };
            }

            //    xy 
            if(!map.containsKey("x") || !map.containsKey("y"))
            {
                return new Object(){public boolean success = false;public String msg = "      。      X、Y ,          X、Y "; };
            }

            Iterator<Row> rows = sheet.rowIterator(); //           
            Row row0 = sheet.getRow(0);
            while (rows.hasNext()) {
                //     
                //     0  
                Row row = rows.next();
                int rowNum = row.getRowNum();
                if(rowNum == 0) continue;

                //         
                Iterator<Cell> cells = row.cellIterator();
                String str = "";
                while (cells.hasNext()) {
                    Cell cell = cells.next();
                    int colNum = cell.getColumnIndex();
                    Object object = "";
                    //  cell         
                    switch (cell.getCellType()) {
                        case HSSFCell.CELL_TYPE_NUMERIC:
                            //              ,        
                            if (HSSFDateUtil.isCellDateFormatted(cell)) {
                                Date d = cell.getDateCellValue();
                                long dd = d.getTime();
                                object = map.get(row0.getCell(colNum).getStringCellValue()) + ":{$date:" + dd + "}" ;
                            }else {
                                object = map.get(row0.getCell(colNum).getStringCellValue()) + ":" + cell.getNumericCellValue();
                            }
                            break;
                        case HSSFCell.CELL_TYPE_STRING:
                            object = map.get(row0.getCell(colNum).getStringCellValue()) + ":\"" + cell.getStringCellValue()+"\"";
                            break;
                        case HSSFCell.CELL_TYPE_BOOLEAN:
                            object = map.get(row0.getCell(colNum).getStringCellValue()) + ":" + cell.getBooleanCellValue();
                            break;
                        case HSSFCell.CELL_TYPE_FORMULA:
                            object = map.get(row0.getCell(colNum).getStringCellValue()) + ":" + cell.getCellFormula();
                            break;
                        default:
                            System.out.println("unsuported sell type");
                            break;
                    }
                    if(str == ""){
                        str = object.toString();
                    }else {
                        str += "," + object;
                    }
                }
                //       
                data d = new data();
                str = "{" + str + "}";
                HttpSession session = request.getSession();
                if(session.getAttribute("loginUserName") == null) return null;
                String loginUserName = session.getAttribute("loginUserName") + "";
                d.Insert(tableName,str,loginUserName);
            }
            return new Object(){public boolean success = true;public String msg = "      "; };
        }
        catch (Exception ex){
            return new Object(){public boolean success = false;public String msg = ex.getMessage(); };
        }
    }

    /** *    id     * @param tableId           id * @return    * @author zhengjiang * @Time 2016 3 15  */
    private String getTableNameByTable(String tableId) {
        data d = new data();
        String sqlStr = "{\"_id\":{\"$oid\":\"" + tableId + "\"}}";
        return d.getTableColumnByTableId("collectionList",sqlStr,"name").toString();
    }

    /** *             Workbook * @param inp       * @return Workbook   * @author zhengjiang * @Time 2016 3 15  */
    private static Workbook create(InputStream inp) throws IOException,InvalidFormatException {
        if (!inp.markSupported()) {
            inp = new PushbackInputStream(inp, 8);
        }
        //.xls
        if (POIFSFileSystem.hasPOIFSHeader(inp)) {
            return new HSSFWorkbook(inp);
        }
        //.xlsx
        if (POIXMLDocument.hasOOXMLHeader(inp)) {
            return new XSSFWorkbook(OPCPackage.open(inp));
        }
        throw new IllegalArgumentException("  excel    poi    ");
    }

    /** *           key,    value     * @param tableId  id * @return     * @author zhengjiang * @Time 2016 3 21  */
    private HashMap getTableFieldsByTableId(String tableId)
    {
        HashMap map = new HashMap();
        map.put("x","x");
        map.put("y","y");

        data d = new data();
        String sqlStr = "{\"_id\":{\"$oid\":\"" + tableId + "\"}}";
        //  data getTableColumnByTableId          ,        ,        Document  
        Document doc = (Document)d.getTableColumnByTableId("collectionList",sqlStr,"fieldInfo");
        //              Document     ,        ArrayList<Document>
        ArrayList<Document> docs = new ArrayList<Document>(doc.get("fields",List.class));
        for (Document document:docs) {
            map.put(document.get("alias"),document.get("name"));
        }
        return map;
    }