小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

將xls中的數據寫入數據庫 - 風華少年 - JavaEye技術網站

 suweixin 2011-01-15

將xls中的數據寫入數據庫

文章分類:Web前端
Upload.jsp代碼 復制代碼
  1.  <script>   
  2.   
  3.     function callUpload() {   
  4.      var fileValue = document.FileUpload.file1.value;   
  5.      if (fileValue == "") {   
  6.         alert("請選擇所需上傳的文件!");    
  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">導入的EXCEL文件(導入的明細會復蓋原有明細數據):</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="導入" 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代碼 復制代碼
  1. protected void doPost(HttpServletRequest request, HttpServletResponse response)   
  2.             throws ServletException, IOException {     
  3.           final long MAX_SIZE = 3 * 1024 * 1024;// 設置上傳文件最大為 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.            // 設置字符編碼為UTF-8, 這樣支持漢字顯示   
  10.           response.setCharacterEncoding("GBK");   
  11.           //實例化RequestContext對象   
  12.           RequestContext requestContext = new ServletRequestContext(request);     
  13.           if(FileUpload.isMultipartContent(requestContext)){}    
  14.           // 實例化一個硬盤文件工廠,用來配置上傳組件ServletFileUpload   
  15.           DiskFileItemFactory dfif = new DiskFileItemFactory();     
  16.           //上傳文件胡原始路徑   
  17.           String  realpath = this.getServletContext().getRealPath("/")+"ImagesUploadTemp" ;   
  18.           // 設置存放臨時文件的目錄   
  19.           dfif.setRepository(new File(realpath));   
  20.           dfif.setSizeThreshold(4096);// 設置上傳文件時用于臨時存放文件的內存大小,這里是4K.多于的部分將臨時存在硬盤    
  21.           // 用以上工廠實例化上傳組件   
  22.           ServletFileUpload sfu = new ServletFileUpload(dfif);   
  23.           System.err.println(" reapath="+this.getServletContext().getRealPath("/")+"ImagesUploadTemp");   
  24.            // 設置最大上傳尺寸   
  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("文件大小不能為空,請選擇上傳文件<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.                 // 得到當前文件   
  54.                 fileItem = (FileItem) fileItr.next();   
  55.                 // 忽略簡單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("請選擇上傳文件<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.                 // 得到文件的擴展名(無擴展名時將得到全名)   
  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("請上傳以下類型的文件<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.                 // 根據系統時間生成上傳后保存的文件名   
  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.            /******************這個你把它去掉*****************/   
  113.            //主要是為了導入成功以后,將它顯示到頁面上的方法   
  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("開始時間="+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隨機數主鍵   
  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.                 //這里我取不到列數的,所以將它寫死了   
  154.                 int cellNum =6;    
  155. //              System.out.println("列數"+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.                         //對取到值 中有特殊符號進行處理(這個方法可選)   
  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.                     //將值放到對象中在 放到list中,為了方便插入數據庫   
  193.                     list.add(tb);    
  194.                 }   
  195.             }   
  196.             try{   
  197.                 ThemeAction action  = new ThemeAction();   
  198.                 //判斷這個xls有沒有被從復導入   
  199.                 String ret = action.upload(list);    
  200.                 if(ret!="ok"){   
  201.                     request.setAttribute("excel", ret);   
  202.                 }   
  203.                 System.out.println("結束時間="+new Date());    
  204.                 //我有4000多條數據大概花了1分鐘左右的,讀xls只花了2秒鐘的,插入數據庫時間要多點,可能是我的方法寫的不好,還請理解,你們也可以用自己更好的方法來代替   
  205.                     
  206.             }catch(Exception ex){   
  207.                 ex.printStackTrace();   
  208.                 System.out.println("有異常的");   
  209.                 return;   
  210.             }   
  211.             //關閉文件流   
  212.             inStream.close();    
  213.             //刪除臨時文件   
  214.             file.delete();     
  215.         }catch(Exception e){   
  216.             e.printStackTrace();   
  217.         }   
  218.     }   

 

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多