最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)Excel批量導(dǎo)入數(shù)據(jù)

 更新時間:2020年08月25日 12:24:09   作者:樹狀細(xì)胞  
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)Excel批量導(dǎo)入數(shù)據(jù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

Excel的批量導(dǎo)入是很常見的功能,這里采用Jxl實(shí)現(xiàn),數(shù)據(jù)量或樣式要求較高可以采用 poi

框架環(huán)境:Spring + SpringMvc(注解實(shí)現(xiàn))

1.首先導(dǎo)入依賴jar包

<dependency>
 <groupId>net.sourceforge.jexcelapi</groupId>
 <artifactId>jxl</artifactId>
 <version>2.6.10</version>
</dependency>

2.前端頁面–jsp(enctype必須為"multipart/form-data"

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<div style="width: 600px;">
 <form class="form" method="post" data-submit="ajax" enctype="multipart/form-data" 
 action="/hpersonnel/import.do">
 //<input type="hidden" name="id" value="<%= request.getParameter("id") %>" />  
 <div class="form-group">  
  <label class="form-label w100"> </label>
  <label class="form-label ">1、下載模板。
  <a class="btn btn-default submit-form" href="/template/personnel.xls" rel="external nofollow" >下載</a>
  </label>
 </div>
 <div class="form-group">
  <label class="form-label w100"> </label>
  <label class="form-label ">2、按照模板表頭填寫內(nèi)容,請勿修改文件格式</label>
 </div>
 <div class="form-group">
  <label class="form-label w100"> </label>
  <label class="form-label ">3、<input type="file" name="file" /></label>
 </div>  
 <div class="btns dialog-button">
  <button class="dialog-btn-yes" type="submit">提交</button>
  <button class="dialog-btn-no" type="button" onclick="app.closeDialog(this)">取消</button>
 </div> 
 </form>
</div>

3.視圖模板

4.Controller

@ResponseBody
@RequestMapping(value = "import")
public Object import(MultipartFile file) { 
 
 if (file.isEmpty()) {
 return ResultObject.failure("文件為空");
 }
 ResultObject result = new ResultObject();
 //記錄集合
 List<Map> mapList = new ArrayList<Map>();
 //校驗(yàn)結(jié)果
 boolean reqFlag = true;
 //回復(fù)消息
 String reqMsg = "";
 //報錯消息數(shù)
 Integer error = 0;
 //解析文件
 try {
 //轉(zhuǎn)換成輸入流
 InputStream is = file.getInputStream();
 //得到excel
 Workbook workbook = Workbook.getWorkbook(is);
 //得到sheet
 Sheet sheet = workbook.getSheet(0);
 //得到列數(shù)
 int colsNum = sheet.getColumns();
 //得到行數(shù)
 int rowsNum = sheet.getRows();
 if (rowsNum == 1) return ResultObject.failure("沒有數(shù)據(jù)");
 //單元格
 Cell cell;
 //數(shù)據(jù)校驗(yàn)
 for (int i = 1; i < rowsNum; i++) {//第一行是標(biāo)題,所以i從1開始
  Map<Integer, Object> map = new HashMap<Integer, Object>();
  for (int j = 0; j < colsNum; j++) {
  cell = sheet.getCell(j, i);//第一個參數(shù)是列.第二個參數(shù)是行
  if (j < 4 && "".equals(cell.getContents())) { //----這里判斷必填項(xiàng)(前4列)
   reqFlag = false;
   reqMsg += "第" + (i + 1) + "行錯誤,錯誤信息:" + "必填項(xiàng)缺漏";
   reqMsg += "<br>";
   error++;
   break;
  }
  String cellString = cell.getContents();
  cellString = cellString.trim();
  switch (j) {
   case 1: {
   //進(jìn)行校驗(yàn)處理,例如手機(jī)號
    if (!StringUtil.isMobileNo(cellString)) {
    reqFlag = false;
    reqMsg += "第" + (i + 1) + "行錯誤,錯誤信息:" + "聯(lián)系電話有誤";
    reqMsg += "<br>";
    error++;
   } else {
    map.put(j, cellString);
   }
   break;
   }
   case 2: { ### break; }
   case 3: { ### break; }
   //無需校驗(yàn),歸入default
   default: {
   map.put(j, cell.getContents());
   }
  }
  }
  if (reqFlag) {//校驗(yàn)通過
  mapList.add(map);
  }
 }
 } catch (IOException e) {
 e.printStackTrace();
 } catch (BiffException e) {
 e.printStackTrace();
 }
 //入庫
 try {
 if (mapList.size() > 0 && reqFlag) {
  //此處try,catch應(yīng)優(yōu)化為事務(wù)處理maplist實(shí)現(xiàn)全記錄成功或失敗
  result.setSuccess("提交成功");
 } else {  
  if (error > 10) {//設(shè)置要顯示的錯誤數(shù)
  int index = StringUtil.getIndex(reqMsg, 10, "<br>");
  reqMsg = reqMsg.substring(0, index + 4);
  reqMsg += "未顯示錯誤數(shù):" + (error - 10) + "條";
  reqMsg += "<br>";
  }
  result.setFailure(reqMsg);
 }
 } catch (Exception e) {
 result.setFailure("入庫錯誤,請聯(lián)系管理員!");
 e.printStackTrace();
 }
 return result;
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java動態(tài)替換properties文件中鍵值方式

    Java動態(tài)替換properties文件中鍵值方式

    這篇文章主要介紹了Java動態(tài)替換properties文件中鍵值方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • JAVA多線程處理for循環(huán)數(shù)據(jù)詳細(xì)講解

    JAVA多線程處理for循環(huán)數(shù)據(jù)詳細(xì)講解

    這篇文章主要給大家介紹了關(guān)于JAVA多線程處理for循環(huán)數(shù)據(jù)的相關(guān)資料,我們在代碼中經(jīng)常需要使用for循環(huán)這個操作來達(dá)到目的,而當(dāng)for循環(huán)的次數(shù)過多時我們會發(fā)現(xiàn)執(zhí)行效率會變的很低,整體耗時非常多,需要的朋友可以參考下
    2023-07-07
  • Java靜態(tài)static關(guān)鍵字原理詳解

    Java靜態(tài)static關(guān)鍵字原理詳解

    這篇文章主要介紹了Java靜態(tài)static關(guān)鍵字原理詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • java內(nèi)部類原理與用法詳解

    java內(nèi)部類原理與用法詳解

    這篇文章主要介紹了java內(nèi)部類原理與用法,結(jié)合實(shí)例形式分析了Java內(nèi)部類的概念、原理、分類及相關(guān)使用技巧,需要的朋友可以參考下
    2019-05-05
  • 一文徹底理清SpringBoot CURD處理邏輯、順序

    一文徹底理清SpringBoot CURD處理邏輯、順序

    這篇文章主要給大家介紹了關(guān)于如何一文徹底理清SpringBoot CURD處理邏輯、順序的相關(guān)資料,CURD是一個數(shù)據(jù)庫技術(shù)中的縮寫詞,一般的項(xiàng)目開發(fā)的各種參數(shù)的基本功能都是CURD,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • 親手教你IDEA2020.3創(chuàng)建Javaweb項(xiàng)目的步驟詳解

    親手教你IDEA2020.3創(chuàng)建Javaweb項(xiàng)目的步驟詳解

    這篇文章主要介紹了IDEA2020.3創(chuàng)建Javaweb項(xiàng)目的步驟詳解,本文是小編手把手教你,通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-03-03
  • springboot配置請求超時時間(Http會話和接口訪問)

    springboot配置請求超時時間(Http會話和接口訪問)

    本文主要介紹了springboot配置請求超時時間,包含Http會話和接口訪問兩種,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • Spring Boot 搭建 ELK正確看日志的配置流程

    Spring Boot 搭建 ELK正確看日志的配置流程

    這篇文章主要介紹了Spring Boot 搭建 ELK正確看日志的配置流程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 使用session實(shí)現(xiàn)簡易購物車功能

    使用session實(shí)現(xiàn)簡易購物車功能

    這篇文章主要為大家詳細(xì)介紹了使用session實(shí)現(xiàn)簡易購物車功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 解決啟用 Spring-Cloud-OpenFeign 配置可刷新項(xiàng)目無法啟動的問題

    解決啟用 Spring-Cloud-OpenFeign 配置可刷新項(xiàng)目無法啟動的問題

    這篇文章主要介紹了解決啟用 Spring-Cloud-OpenFeign 配置可刷新項(xiàng)目無法啟動的問題,本文重點(diǎn)給大家介紹Spring-Cloud-OpenFeign的原理及問題解決方法,需要的朋友可以參考下
    2021-10-10

最新評論

克山县| 卢氏县| 武安市| 阿拉善盟| 盐亭县| 茌平县| 乌审旗| 漾濞| 德化县| 图们市| 乌鲁木齐市| 两当县| 会昌县| 玉山县| 上饶县| 福州市| 莱阳市| 泰顺县| 铜山县| 长治市| 彰化市| 二手房| 方正县| 巴楚县| 丽江市| 汉沽区| 五大连池市| 屏山县| 信阳市| 建始县| 南城县| 交口县| 敦煌市| 宁陕县| 定边县| 延长县| 林周县| 临城县| 左贡县| 资溪县| 皮山县|