亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

JSP上傳excel及excel插入至數據庫的方法

2020-07-27 21:30:30
字體:
來源:轉載
供稿:網友

本文實例講述了JSP上傳excel及excel插入至數據庫的方法。分享給大家供大家參考。具體如下:

此導入excel是與pojo綁定的,(缺點)excle表頭必須是pojo的字段值

1. html頁面:

<form id="myform" method="post" enctype="multipart/form-data"><table> <tr>  <td></td>  <td>   <input type="file" name="filepath" id="filepath"    class="easyui-validatebox" required=true    validType="equalLength[4]" missingMessage="文件!" value="" />  </td> </tr> <tr align="center">  <td colspan="2">   <a id="btn1" class="easyui-linkbutton"    data-options="iconCls:'icon-ok'" style="width: 60px"    onclick="subForm();">OK</a>   <a id="btn2" class="easyui-linkbutton"    data-options="iconCls:'icon-cancel'" style="width: 60px"    onclick="closeDig();">Cancel</a>  </td> </tr></table></form><script type="text/javascript">function subForm(){ if($('#myform').form('validate')){  /**  var filepath = $("#filepath").val();  alert(filepath);  $.ajax({   url: 'excleImport',   typs: "post",   data: {"filepath":filepath},   async: false,    error: function(request) {    $('#dg').datagrid('reload');    closeDig();    $.messager.alert("操作提示", "操作成功!","info");    },    success: function(data) {     alert("success");    }  });  **/  var filepath = $("#filepath").val();  var re = /(//+)/g;   var filename = filepath.replace(re,"#");   //對路徑字符串進行剪切截取   var one = filename.split("#");   //獲取數組中最后一個,即文件名   var two = one[one.length-1];   //再對文件名進行截取,以取得后綴名   var three = two.split(".");    //獲取截取的最后一個字符串,即為后綴名   var last = three[three.length-1];   //添加需要判斷的后綴名類型   var tp = "xls,xlsx";   //返回符合條件的后綴名在字符串中的位置   var rs = tp.indexOf(last);   if(rs != -1){    $("#myform").attr("action","excleImport");   $("#myform").submit();  }else{    $.messager.alert("操作提示", "您選擇的上傳文件不是有效xls或者xlsx文件!","error");   return false;   }  } else {  $.messager.alert("操作提示", "請選擇上傳文件!","error"); }}</script>

2. java代碼:

@RequestMapping("/excleImport") public void excleImport(HttpServletRequest request) throws IOException, Exception {  request.setCharacterEncoding("utf-8"); //設置編碼   //獲得磁盤文件條目工廠   DiskFileItemFactory factory = new DiskFileItemFactory();   //獲取文件需要上傳到的路徑   String path = request.getRealPath("/upload/kaku");   File uploadDir = new File(path);  if (!uploadDir.exists()) {   uploadDir.mkdirs();  }  factory.setRepository(uploadDir);   //設置 緩存的大小,當上傳文件的容量超過該緩存時,直接放到 暫時存儲室   factory.setSizeThreshold(1024*1024) ;   //高水平的API文件上傳處理   ServletFileUpload upload = new ServletFileUpload(factory);   //可以上傳多個文件   List<FileItem> list = (List<FileItem>)upload.parseRequest(request);   for(FileItem item : list)   {    //獲取表單的屬性名字    String name = item.getFieldName();    //如果獲取的 表單信息是普通的 文本 信息    if(item.isFormField())    {          //獲取用戶具體輸入的字符串 ,名字起得挺好,因為表單提交過來的是 字符串類型的     String value = item.getString() ;     request.setAttribute(name, value);    }    //對傳入的非 簡單的字符串進行處理 ,比如說二進制的 圖片,電影這些    else    {     /**      * 以下三步,主要獲取 上傳文件的名字      */     //獲取路徑名     String value = item.getName() ;     //索引到最后一個反斜杠     int start = value.lastIndexOf("http://");     //截取 上傳文件的 字符串名字,加1是 去掉反斜杠,     String filename = value.substring(start+1);     //文件后綴名    String prefix = filename.substring(filename.lastIndexOf(".") + 1);    CardCenter cardCenter = new CardCenter();    request.setAttribute(name, filename);     //真正寫到磁盤上     //它拋出的異常 用exception 捕捉     //item.write( new File(path,filename) );//第三方提供的     //手動寫的     //OutputStream out = new FileOutputStream(new File(path,filename));     InputStream in = item.getInputStream() ;     List<CardCenter> listFromExcel = (List<CardCenter>)ExelUtil.exportListFromExcel(in, prefix, cardCenter);    this.cardCenterService.excleImport(listFromExcel);    /*int length = 0 ;     byte [] buf = new byte[1024] ;     System.out.println("獲取上傳文件的總共的容量:"+item.getSize());     // in.read(buf) 每次讀到的數據存放在 buf 數組中     while( (length = in.read(buf) ) != -1)     {      //在 buf 數組中 取出數據 寫到 (輸出流)磁盤上      out.write(buf, 0, length);     } */    in.close();     //out.close();    }   } }

3. java代碼:

public class ExelUtil {  //第一列開始 private static int start = 0; //最后一列序號 private static int end =0; public static String getSubString(String str){  return str.substring(0,str.lastIndexOf(".")); } /**   * 方法描述:由Excel文件的Sheet導出至List  * @param file  * @param sheetNum  * @return  * @throws IOException  * @author   * @date 2013-3-25 下午10:44:26  * @comment  */ public static List<?> exportListFromExcel(File file, String fileFormat,Object dtoobj)    throws IOException {   return exportListFromExcel(new FileInputStream(file), fileFormat,dtoobj);  }  /**   * 方法描述:由Excel流的Sheet導出至List   * @param is  * @param extensionName  * @param sheetNum  * @return  * @throws IOException  * @author   * @date 2013-3-25 下午10:44:03  * @comment  */ public static List<?> exportListFromExcel(InputStream is,String fileFormat,Object dtoobj) throws IOException {   Workbook workbook = null;   if (fileFormat.equals(BizConstant.XLS)) {    workbook = new HSSFWorkbook(is);   } else if (fileFormat.equals(BizConstant.XLSX)) {    workbook = new XSSFWorkbook(is);   }   return exportListFromExcel(workbook,dtoobj);  }  /**  * 方法描述:由指定的Sheet導出至List  * @param workbook  * @param sheetNum  * @return  * @author   * @date 2013-3-25 下午10:43:46  * @comment  */ private static List<Object> exportListFromExcel(Workbook workbook ,Object dtoobj) {  List<Object> list = new ArrayList<Object>();  String[] model = null;  Sheet sheet = workbook.getSheetAt(0);   // 解析公式結果   FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();   int minRowIx = sheet.getFirstRowNum();   int maxRowIx = sheet.getLastRowNum();   for (int rowIx = minRowIx; rowIx <= maxRowIx; rowIx++) {    Object obj = null;   if(rowIx==minRowIx){    start = sheet.getRow(rowIx).getFirstCellNum();    end = sheet.getRow(rowIx).getLastCellNum();   }   Row row = sheet.getRow(rowIx);    StringBuilder sb = new StringBuilder();     for (int i = start; i < end; i++) {     Cell cell = row.getCell(new Integer(i));     CellValue cellValue = evaluator.evaluate(cell);     if (cellValue == null) {      sb.append(BizConstant.SEPARATOR+null);     continue;     }     // 經過公式解析,最后只存在Boolean、Numeric和String三種數據類型,此外就是Error了     // 其余數據類型,根據官方文檔,完全可以忽略     switch (cellValue.getCellType()) {     case Cell.CELL_TYPE_BOOLEAN:      sb.append(BizConstant.SEPARATOR + cellValue.getBooleanValue());      break;     case Cell.CELL_TYPE_NUMERIC:      // 這里的日期類型會被轉換為數字類型,需要判別后區分處理      if (DateUtil.isCellDateFormatted(cell)) {       sb.append(BizConstant.SEPARATOR + cell.getDateCellValue());      } else {       sb.append(BizConstant.SEPARATOR + cellValue.getNumberValue());      }      break;     case Cell.CELL_TYPE_STRING:      sb.append(BizConstant.SEPARATOR + cellValue.getStringValue());      break;     case Cell.CELL_TYPE_FORMULA:      break;     case Cell.CELL_TYPE_BLANK:      break;     case Cell.CELL_TYPE_ERROR:      break;     default:      break;     }    }    if(rowIx==minRowIx){    String index = String.valueOf(sb);    String realmodel =index.substring(1, index.length());    model =realmodel.split(",");   }else{    String index = String.valueOf(sb);    String realvalue =index.substring(1, index.length());    String[] value =realvalue.split(",");    //字段映射    try {     dtoobj =dtoobj.getClass().newInstance();    } catch (InstantiationException e) {     e.printStackTrace();    } catch (IllegalAccessException e) {     e.printStackTrace();    }    obj = reflectUtil(dtoobj,model,value);    list.add(obj);   }  }   return list;  }  /**  * 方法描述:字段映射賦值  * @param objOne  * @param listName  * @param listVales  * @return  * @author   * @date 2013-3-25 下午10:53:43  * @comment  */ @SuppressWarnings("deprecation") private static Object reflectUtil(Object objOne, String[] listName,   String[] listVales) {  Field[] fields = objOne.getClass().getDeclaredFields();  for (int i = 0; i < fields.length; i++) {   fields[i].setAccessible(true);   for (int j = 0; j < listName.length; j++) {    if (listName[j].equals(fields[i].getName())) {     try {      if (fields[i].getType().getName().equals(java.lang.String.class.getName())) {        // String type       if(listVales[j]!=null){        fields[i].set(objOne, listVales[j]);       }else{        fields[i].set(objOne, "");       }      } else if (fields[i].getType().getName().equals(java.lang.Integer.class.getName())        || fields[i].getType().getName().equals("int")) {        // Integer type        if(listVales[j]!=null){        fields[i].set(objOne, (int)Double.parseDouble(listVales[j]));        }else{        fields[i].set(objOne, -1);        }      }else if(fields[i].getType().getName().equals("Date")){       //date type       if(listVales[j]!=null){        fields[i].set(objOne, Date.parse(listVales[j]));       }       }else if(fields[i].getType().getName().equals("Double")        ||fields[i].getType().getName().equals("float")){       //double       if(listVales[j]!=null){        fields[i].set(objOne, Double.parseDouble(listVales[j]));        }else{        fields[i].set(objOne, 0.0);        }      }     } catch (IllegalArgumentException e) {      e.printStackTrace();     } catch (IllegalAccessException e) {      e.printStackTrace();     }     break;    }   }  }  return objOne; }}

希望本文所述對大家的JSP程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品成人在线视频| 国内精品小视频在线观看| 欧美成人免费观看| 91精品啪在线观看麻豆免费| 国产在线精品一区免费香蕉| 国产精品欧美久久久| 欧美日韩国产精品| 日本国产高清不卡| 国产精品嫩草影院一区二区| 丝袜美腿精品国产二区| 亚洲精品中文字| 美女福利精品视频| 欧美性猛交99久久久久99按摩| 日韩精品在线私人| 欧美日韩一区二区免费在线观看| 最好看的2019年中文视频| 国产精品va在线| 在线观看免费高清视频97| 久久91亚洲人成电影网站| 动漫精品一区二区| 亚洲欧美综合区自拍另类| 成人精品久久一区二区三区| 国产午夜精品视频免费不卡69堂| 午夜精品久久久99热福利| 日韩极品精品视频免费观看| 97在线视频免费播放| 欧美日韩亚洲一区二| 久久中国妇女中文字幕| 亚洲free性xxxx护士hd| 国产丝袜视频一区| 精品国产电影一区| 亚洲欧美日韩国产中文| 欧美日韩另类在线| 亚洲国产欧美自拍| 国产成人精品免费久久久久| 中文字幕在线观看日韩| 久久影视电视剧免费网站清宫辞电视| 国产一区二区丝袜高跟鞋图片| 欧美一级视频免费在线观看| 欧美人与性动交| 精品一区二区亚洲| 国产日韩欧美另类| 亚洲性视频网址| 国内精品视频久久| 9.1国产丝袜在线观看| 亚洲福利视频久久| 欧美高清视频一区二区| 在线观看日韩欧美| 亚洲精品综合精品自拍| 久久久亚洲精品视频| 欧美日韩国产麻豆| 97香蕉超级碰碰久久免费软件| 亚洲精品久久久久久久久久久久久| 国产精品视频公开费视频| 欧美极品少妇xxxxⅹ免费视频| 欧美日韩美女视频| 亚洲国产成人91精品| 欧美精品中文字幕一区| 亚洲欧美日本伦理| 亚洲第五色综合网| 欧美美女18p| 亚洲最大成人免费视频| 国产欧美一区二区三区在线| 情事1991在线| 美女性感视频久久久| 亚洲第一色中文字幕| 俺去亚洲欧洲欧美日韩| 日韩女优在线播放| 欧美成人精品一区二区| 日韩av免费网站| 国产精品老女人视频| 中文字幕精品国产| 免费91在线视频| 97在线观看视频国产| 欧美麻豆久久久久久中文| 另类天堂视频在线观看| 97av在线影院| 欧美大荫蒂xxx| 68精品国产免费久久久久久婷婷| 午夜精品久久久久久久99热浪潮| 欧美二区在线播放| 国产精品久久久久高潮| 在线观看国产精品日韩av| 国产在线视频一区| 亚洲国产中文字幕久久网| 亚洲精品美女在线观看播放| 在线观看日韩欧美| 日韩一二三在线视频播| 亚洲一区二区三区视频播放| 精品五月天久久| 亚洲第一视频网站| 欧美综合在线第二页| 欧美激情一区二区三区高清视频| 亚洲一区二区中文字幕| 狠狠躁天天躁日日躁欧美| 国产精品第二页| 亚洲二区中文字幕| 欧美一级片久久久久久久| 黑人与娇小精品av专区| 欧美极品在线视频| 91爱爱小视频k| 久久精品国产亚洲| 亚洲国产成人精品久久| 日韩网站在线观看| 日韩电视剧免费观看网站| 国内精品久久久久久中文字幕| 国产欧美日韩精品丝袜高跟鞋| 国产在线视频91| 欧美精品videos另类日本| 精品成人乱色一区二区| 九九热精品在线| 欧美精品少妇videofree| 91在线免费视频| 亚洲**2019国产| 久久久久久久一| 久久久精品2019中文字幕神马| 久久免费视频网站| 亚洲另类欧美自拍| 亚洲人成网站免费播放| 亚洲第一网中文字幕| 日韩中文第一页| 国产精品美女无圣光视频| 久久伊人91精品综合网站| 欧美综合在线观看| 91精品视频观看| 日韩一区av在线| 亚洲精品综合精品自拍| 4k岛国日韩精品**专区| 中文字幕日韩av电影| 欧美在线性爱视频| 日韩高清免费观看| 久久影视免费观看| 另类天堂视频在线观看| 精品欧美激情精品一区| 亚洲精品久久久久中文字幕欢迎你| 国产精品男人爽免费视频1| 久久久久久久一| 日韩免费黄色av| 国产日韩av在线播放| 久久久久久亚洲精品不卡| 日韩欧美成人区| 国产精品美女主播在线观看纯欲| 日本久久久久久久久| 色哟哟网站入口亚洲精品| 中文字幕精品网| 日韩欧美国产中文字幕| 97在线免费观看视频| 国内偷自视频区视频综合| 最近2019中文字幕第三页视频| 精品中文字幕在线2019| 欧美一二三视频| 欧美高清视频一区二区| 国产99久久精品一区二区永久免费| 国产丝袜一区二区三区免费视频| 亚洲男人天堂网| 国产成人鲁鲁免费视频a| 亚洲一区二区三区视频| 久久久中文字幕| 国语自产精品视频在线看抢先版图片| 7m精品福利视频导航| 国产精品电影久久久久电影网| 亚洲一区亚洲二区亚洲三区| 国产精品一区电影| 日韩在线精品视频|