乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      將xls中的數(shù)據(jù)寫入數(shù)據(jù)庫(kù) - 風(fēng)華少年 - JavaEye技術(shù)網(wǎng)站

       suweixin 2011-01-15

      將xls中的數(shù)據(jù)寫入數(shù)據(jù)庫(kù)

      文章分類:Web前端
      Upload.jsp代碼 復(fù)制代碼
      1.  <script>   
      2.   
      3.     function callUpload() {   
      4.      var fileValue = document.FileUpload.file1.value;   
      5.      if (fileValue == "") {   
      6.         alert("請(qǐng)選擇所需上傳的文件!");    
      7.         return false;   
      8.      }   
      9.       showLayer.style.display = "inline";     
      10.      //count()   
      11.      FileUpload.submit();    
      12.        
      13.    }   
      14. </script>   
      15. <body>   
      16. <form  name="FileUpload" method="post" action="uploads" enctype="multipart/form-data" >     
      17.     <table border="0">   
      18.       <tr>   
      19.         <td nowrap>    
      20.           <div align="left">導(dǎo)入的EXCEL文件(導(dǎo)入的明細(xì)會(huì)復(fù)蓋原有明細(xì)數(shù)據(jù)):</div>   
      21.         </td>   
      22.       </tr>   
      23.       <tr>   
      24.         <td nowrap>    
      25.         <input type="file" class="mybutton" name="file1" size="50" style="border-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px">   
      26.         <input type="submit" class="mybutton" value="導(dǎo)入" name="shangchuan" onClick="return callUpload()" style="border-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px" >   
      27.         </td>   
      28.       </tr>    
      29.     </table>   
      30.     <table width="100%">   
      31.         <tr>   
      32.         <td>   
      33.             <hr width="100%">   
      34.         </td>   
      35.       </tr>   
      36.     </table>   
      37.     </form>   
      38. </body>  

       

      Upload.java代碼 復(fù)制代碼
      1. protected void doPost(HttpServletRequest request, HttpServletResponse response)   
      2.             throws ServletException, IOException {     
      3.           final long MAX_SIZE = 3 * 1024 * 1024;// 設(shè)置上傳文件最大為 3M   
      4.           String  u_name="";   
      5.            // 允許上傳的文件格式的列表   
      6.           final String[] allowedExt = new String[] { "xls""jpeg""gif""txt",   
      7.              "doc""docx""mp3""wma" };   
      8.           response.setContentType("text/html");   
      9.            // 設(shè)置字符編碼為UTF-8, 這樣支持漢字顯示   
      10.           response.setCharacterEncoding("GBK");   
      11.           //實(shí)例化RequestContext對(duì)象   
      12.           RequestContext requestContext = new ServletRequestContext(request);     
      13.           if(FileUpload.isMultipartContent(requestContext)){}    
      14.           // 實(shí)例化一個(gè)硬盤文件工廠,用來(lái)配置上傳組件ServletFileUpload   
      15.           DiskFileItemFactory dfif = new DiskFileItemFactory();     
      16.           //上傳文件胡原始路徑   
      17.           String  realpath = this.getServletContext().getRealPath("/")+"ImagesUploadTemp" ;   
      18.           // 設(shè)置存放臨時(shí)文件的目錄   
      19.           dfif.setRepository(new File(realpath));   
      20.           dfif.setSizeThreshold(4096);// 設(shè)置上傳文件時(shí)用于臨時(shí)存放文件的內(nèi)存大小,這里是4K.多于的部分將臨時(shí)存在硬盤    
      21.           // 用以上工廠實(shí)例化上傳組件   
      22.           ServletFileUpload sfu = new ServletFileUpload(dfif);   
      23.           System.err.println(" reapath="+this.getServletContext().getRealPath("/")+"ImagesUploadTemp");   
      24.            // 設(shè)置最大上傳尺寸   
      25.           sfu.setSizeMax(MAX_SIZE);     
      26.           PrintWriter out = response.getWriter();   
      27.           // 從request得到 所有 上傳域的列表   
      28.           List fileList =  null;    
      29.           try {   
      30.                fileList = sfu.parseRequest(request);    
      31.           } catch (FileUploadException e) {// 處理文件尺寸過大異常   
      32.                e.printStackTrace();   
      33.                if (e instanceof SizeLimitExceededException) {   
      34.                    out.println("文件尺寸超過規(guī)定大小:" + MAX_SIZE + "字節(jié)<p />");   
      35.                    out.println("<a href=\"excelInsert.action\" target=\"_top\">返回</a>");   
      36.                    return;   
      37.                }   
      38.                //e.printStackTrace();   
      39.            }   
      40.            // 沒有文件上傳   
      41.            if (fileList == null || fileList.size() == 0) {   
      42.                out.println("文件大小不能為空,請(qǐng)選擇上傳文件<p />");   
      43.                out.println("<a href=\"excelInsert.action\" target=\"_top\">返回</a>");   
      44.                return;   
      45.            }   
      46.            // 得到所有上傳的文件   
      47.            Iterator fileItr = fileList.iterator();   
      48.            // 循環(huán)處理所有文件   
      49.            while (fileItr.hasNext()) {   
      50.                 FileItem fileItem = null;   
      51.                 String path = null;   
      52.                 long size = 0;   
      53.                 // 得到當(dāng)前文件   
      54.                 fileItem = (FileItem) fileItr.next();   
      55.                 // 忽略簡(jiǎn)單form字段而不是上傳域的文件域(<input type="text" />等)   
      56.                 if (fileItem == null || fileItem.isFormField()) {   
      57.                  continue;   
      58.                 }   
      59.                 // 得到文件的完整路徑   
      60.                 path = fileItem.getName();     
      61.                 path = new String(path.getBytes("ISO-8859-1"),"UTF-8");   
      62.                 System.out.println("完整路徑="+path);   
      63.                 // 得到文件的大小   
      64.                 size = fileItem.getSize();   
      65.                 if ("".equals(path) || size == 0) {   
      66.                     out.println("請(qǐng)選擇上傳文件<p />");   
      67.                     out.println("<a href=\"excelInsert.action\" target=\"_top\">返回</a>");   
      68.                     return;   
      69.                 }   
      70.        
      71.                 // 得到去除路徑的文件名   
      72.                 String t_name = path.substring(path.lastIndexOf("\\") + 1);   
      73.                 // 得到文件的擴(kuò)展名(無(wú)擴(kuò)展名時(shí)將得到全名)   
      74.                 String t_ext = t_name.substring(t_name.lastIndexOf(".") + 1);   
      75.                 // 拒絕接受規(guī)定文件格式之外的文件類型   
      76.                 int allowFlag = 0;   
      77.                 int allowedExtCount = allowedExt.length;   
      78.                 for (; allowFlag < allowedExtCount; allowFlag++) {   
      79.                     if (allowedExt[allowFlag].equals(t_ext))   
      80.                         break;   
      81.                 }   
      82.                 if (allowFlag == allowedExtCount) {   
      83.                     out.println("請(qǐng)上傳以下類型的文件<p />");   
      84.                     for (allowFlag = 0; allowFlag < allowedExtCount; allowFlag++)   
      85.                         out.println("*." + allowedExt[allowFlag]   
      86.                                                       + "   ");   
      87.                         out.println("<p /><a href=\"excelInsert.action\" target=\"_top\">返回</a>");   
      88.                         return;   
      89.                 }   
      90.        
      91.                 long now = System.currentTimeMillis();   
      92.                 // 根據(jù)系統(tǒng)時(shí)間生成上傳后保存的文件名   
      93.                 String prefix = String.valueOf(now);   
      94.                 // 保存的最終文件完整路徑,保存在web根目錄下的ImagesUploaded目錄下   
      95.                 u_name = this.getServletContext().getRealPath("/")+"ImagesUploaded"+"\\"  
      96.                   + prefix + "." + t_ext;   
      97.                 System.out.println("文件上傳后的路徑!u_name="+u_name);   
      98.                 try {   
      99.                      // 保存文件   
      100.                      fileItem.write(new File(u_name));   
      101.                      out.println("文件上傳成功. 已保存為: " + prefix + "." + t_ext   
      102.                        + "   文件大小: " + size + "字節(jié)<p />");   
      103.                      out.println("<a href=\"excelInsert.action\" target=\"_top\">繼續(xù)上傳</a>");   
      104.                 } catch (Exception e) {   
      105.                     e.printStackTrace();   
      106.                 }    
      107.            }   
      108.            u_name = u_name.replace("\\", "/");   
      109.            System.out.println("u_name =="+u_name);   
      110.            insert(u_name,request,response);   
      111.               
      112.            /******************這個(gè)你把它去掉*****************/   
      113.            //主要是為了導(dǎo)入成功以后,將它顯示到頁(yè)面上的方法   
      114.            List list_lxmc = exam.getAllStlxMc();   
      115.            for(int i=0;i<list_lxmc.size();i++){   
      116. //              System.out.println("類型名稱"+list_lxmc.size()+";"+list_lxmc.get(i));   
      117.            }   
      118.                
      119.            request.setAttribute("list_lxmc", list_lxmc);   
      120.                
      121.                
      122.            List list_allSel = exam.getSelThemeTypeNamesobr_ones();   
      123. //         System.out.println(list_allSel+"..............");   
      124.            request.setAttribute("list_allSel", list_allSel);   
      125.               
      126.            /***************************/   
      127.            request.getRequestDispatcher("/admin/thememanage/excelInsert.jsp").forward(request, response);   
      128.   
      129.     }   
      130.   
      131.   
      132.   
      133. public void insert(String path,HttpServletRequest request,HttpServletResponse response){   
      134.         try{   
      135.             //////////// 讀取 u_name 文件 并保存///////////   
      136.                
      137.             System.out.println("開始時(shí)間="+new Date());   
      138.                
      139.             java.io.File file = new java.io.File(path);   
      140.             java.io.InputStream inStream = new java.io.FileInputStream(file);   
      141.             HSSFWorkbook wb = new HSSFWorkbook(inStream);   
      142.                
      143.             //int sheetNum = wb.getNumberOfSheets();     
      144.             int sheetNum = 1;    
      145.             ThemeBean tb = null;   
      146.             ArrayList list = new ArrayList();   
      147.             //為了獲得32隨機(jī)數(shù)主鍵   
      148.             UUIDGenerator uuid=new UUIDGenerator();   
      149.             for (int i = 0; i < sheetNum; i++){   
      150.                 HSSFSheet childSheet = wb.getSheetAt(i);   
      151.                 int rowNum = childSheet.getLastRowNum() + 1;   
      152. //              HSSFRow rowline = childSheet.getRow(rowNum);    
      153.                 //這里我取不到列數(shù)的,所以將它寫死了   
      154.                 int cellNum =6;    
      155. //              System.out.println("列數(shù)"+rowline.getLastCellNum());   
      156.                 for (int j = 2; j < rowNum; j++){       
      157.                     tb = new ThemeBean();   
      158.                     HSSFRow row = childSheet.getRow(j);    
      159.                     if (row == null)   
      160.                         continue;       
      161.                     String value = "";   
      162.                     for (int k = 0; k < cellNum; k++){    
      163.                         HSSFCell cell = row.getCell((short) k);   
      164. //                      System.out.println(cell.getCellType()+"===type");   
      165.                         if (cell.getCellType() != HSSFCell.CELL_TYPE_STRING){   
      166.                           continue;   
      167.                         }      
      168.                         //循環(huán)取到xls中的值   
      169.                         value = String.valueOf(cell.getStringCellValue().trim());   
      170.                         //System.out.println("value="+a);   
      171.                         if (value == null)   
      172.                             value = "";   
      173.                         //對(duì)取到值 中有特殊符號(hào)進(jìn)行處理(這個(gè)方法可選)   
      174.                         value = value.replace("'""");   
      175.                         value = value.replace("‘""");   
      176.                         value = value.replace("’""");    
      177.                             
      178.                         switch(k){   
      179.                             case 0: tb.setSTTM(value);    
      180.                             case 1: tb.setSTKSX1(value);   
      181.                             case 2: tb.setSTKSX2(value);   
      182.                             case 3: tb.setSTKSX3(value);    
      183.                             case 4: tb.setSTKSX4(value);    
      184.                             case 5: tb.setRIGHTRESULT(value);    
      185.                         }    
      186.                     }   
      187.                        
      188.                     tb.setSTZT("未使用");    
      189.                     tb.setBZ("備注就省略了");   
      190.                     tb.setSTXXID(uuid.getNextValue("STXXID"));   
      191.                     tb.setSTBH(uuid.getNextValue("STBH"));   
      192.                     //將值放到對(duì)象中在 放到list中,為了方便插入數(shù)據(jù)庫(kù)   
      193.                     list.add(tb);    
      194.                 }   
      195.             }   
      196.             try{   
      197.                 ThemeAction action  = new ThemeAction();   
      198.                 //判斷這個(gè)xls有沒有被從復(fù)導(dǎo)入   
      199.                 String ret = action.upload(list);    
      200.                 if(ret!="ok"){   
      201.                     request.setAttribute("excel", ret);   
      202.                 }   
      203.                 System.out.println("結(jié)束時(shí)間="+new Date());    
      204.                 //我有4000多條數(shù)據(jù)大概花了1分鐘左右的,讀xls只花了2秒鐘的,插入數(shù)據(jù)庫(kù)時(shí)間要多點(diǎn),可能是我的方法寫的不好,還請(qǐng)理解,你們也可以用自己更好的方法來(lái)代替   
      205.                     
      206.             }catch(Exception ex){   
      207.                 ex.printStackTrace();   
      208.                 System.out.println("有異常的");   
      209.                 return;   
      210.             }   
      211.             //關(guān)閉文件流   
      212.             inStream.close();    
      213.             //刪除臨時(shí)文件   
      214.             file.delete();     
      215.         }catch(Exception e){   
      216.             e.printStackTrace();   
      217.         }   
      218.     }   

       

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多