批量导入Excle数据

View视图模态框

  1 <!-- 客户导入弹窗 -->
  2 <div class="modal fade batch-import new-built" id="customerImpo" tabindex="-1" data-backdrop="static" data-keyboard="false">
  3     <div class="modal-dialog modal-margin modal-lg">
  4         <div class="modal-content batch-modal cus-batchimport">
  5             <div class="modal-header text-center">
  6                 <h4 class="modal-title">导入客户信息</h4>
  7             </div>
  8             <input type="hidden" id="filePathCus" value="" />
  9             <div class="modal-body">
 10                 <div class="wrap">
 11                     <div class="batchflow cusbatchflow">
 12                         <ul>
 13                             <li class="normal unload-firstep active"><cite>01</cite>上传文件</li>
 14                             <li class="normal unload-secstep"><cite>02</cite>执行导入</li>
 15                             <li class="unload-laststep"><cite>03</cite>完成</li>
 16                         </ul>
 17                     </div>
 18                     <div class="status_wrap firststep">
 19                         <i class="icon icon_download upload"></i>
 20                         <span class="status_info" id="status_info2">
 21                             填写导入客户的信息<br>
 22                             <span class="batchflow">
 23                                 <label class="checkbox-click" style="font-weight: normal">
 24                                     <span class="import-check-icon import-i-checked"></span>
 25                                     <input type="checkbox" id="carinfo" name="name" style="display: none" />
 26                                     <a>VV平台客户信息导入-精简模板</a>
 27                                 </label>
 28                                 <a class="btn btn-sm batch-download pull-right" id="custdownload" href="~/DownloadFile/VV平台客户信息导入-精简模板.xls">下载</a>
 29                             </span>
 30
 31                         </span>
 32                     </div>
 33                     <div class="status_wrap mt20 firststep">
 34                         <i class="icon icon_upload download"></i>
 35                         <div class="status_info">
 36                             上传填好的客户信息表
 37                             <span class="txtc9">( 仅支持.xls/.xlsx格式,且文件大小不能超过4M )</span>
 38                             <br>
 39                             <span class="batchflow" id="customerFileName">
 40                                 <input type="text" class="batchflow-input form-control" id="batchflow-cstinput">
 41                                 <input type="file" class="upload-input" id="preview" style="display: none;" />
 42                                 <button class="btn btn-sm see-buttom pull-right" id="btn-cuspreview">浏览</button>
 43                             </span>
 44                             <ul id="fileName">
 45                                 <li style="list-style: none;">
 46                                     <div style="display: none; height: 22px">
 47                                         <span class="name" style="height: 22px; display: inline-block"></span><span style="margin: 0 0 0 10px;" class="attsize"></span><span style="margin: 0 0 0 10px;" class="status">等待</span><i class="mpic-delete2 ch" style="font-size: 16px; cursor: pointer">x</i><div style="display: none; width: 100px; height: 11px; margin-top: 2px; padding: 0;" class="progress">
 48                                             <div class="bar" style="width: 0%;"></div>
 49                                         </div>
 50                                     </div>
 51                                     <div class="cb"></div>
 52                                     <div>
 53                                         <form id="uploadFormCus" action="/sysmng/companylogo/uploadLogo.do?idoo=23508470.1482976115424CBD6A663D4677AF41DFC253DA5E57244&amp;X-Progress-ID=23508470.1482976115424CBD6A663D4677AF41DFC253DA5E57244&amp;from=import" method="post" style="margin: 0; padding: 0;" enctype="multipart/form-data">
 54                                             <div style="width: 70px; height: 22px; overflow: hidden;" class="upatt">
 55                                                 <i class="mpic-att"></i><span style="position: relative; display: inline-block;">
 56                                                     <span style="position: absolute; top: 0px; left: 0px; cursor: pointer; width: 50px; height: 20px; overflow: hidden; opacity: 0; z-index: 1; background-color: rgb(255, 255, 255);">
 57                                                         <input class="mgtfile" id="Cusfile" name="logoFile" tabindex="-1" style="width: 200px; height: 200px; font-family: Times; font-size: 50px; right: 426px; cursor: pointer;" type="file">
 58                                                     </span>
 59                                                 </span>
 60                                             </div>
 61                                         </form>
 62                                     </div>
 63                                 </li>
 64                             </ul>
 65                         </div>
 66                     </div>
 67                     <div class="status_wrap secondstep">
 68                         <i class="icon icon_layer_success"></i>
 69                         <span class="status_info" id="Yes_Nums">本次可导入客户:</span>
 70                     </div>
 71                     <div class="status_wrap secondstep">
 72                         <i class="icon icon_layer_warn"></i>
 73                         <span class="status_info" id="No_Nums">本次不可导入客户:</span>
 74                     </div>
 75                     <div class="status_wrap thirdstep">
 76                         <i class="icon icon_layer_success success"></i>
 77                         <span class="status_info success-tip" style="font-size: 18px;">成功导入人数:<span id="importCusNum"></span>个&nbsp;&nbsp;&nbsp;<a onclick="batchImport.showOrHidePwd(this)" href="javascript:void(0)">显示</a></span>
 78                     </div>
 79                     <div style="text-align: center">
 80                         <a href="javascript:void(0)" id="btnSecoudCus" onclick="goIntoSecondStepCus($(this))" class="btn btn-white next first-a">下一步</a>
 81                         <a href="javascript:void(0)" id="btnThirdCus" onclick="goIntothirdStepCus($(this))" class="btn btn-white next second-a">下一步</a>
 82                         <a href="javascript:void(0)" onclick="goIntoFirstStepCus($(this));" class="aupimg second-a">返回重新上传</a>
 83                         <a href="javascript:void(0)" id="endBtnCus" onclick="initStepCus($(this));" class="btn btn-white next final">完成</a>
 84                     </div>
 85                     <div class="status_wrap secondstep">
 86                         <h3 class="bulktit">不可导入的客户:</h3>
 87                         <table class="table-striped">
 88                             <thead>
 89                                 <tr>
 90                                     <th></th>
 91                                     <th>行数</th>
 92                                     <th>编号</th>
 93                                     <th>简称</th>
 94                                     <th>错误提示</th>
 95                                 </tr>
 96                             </thead>
 97                             <tbody id="CusErr"></tbody>
 98                         </table>
 99                     </div>
100                 </div>
101             </div>
102             <div class="modal-footer">
103                 <button class="btn btn-default cancle" data-dismiss="modal" type="button">取消</button>
104             </div>
105         </div>
106     </div>
107 </div>

Js代码

  1 function batchImportInit() {
  2     //initStepCus();
  3     $("#customerImpo").modal(‘show‘);
  4     $("#btnSecoudCus").attr("disabled", true);
  5     $("#batchflow-cstinput").val("");
  6 }
  7
  8 $(function () {
  9     //触发预览按钮
 10     $("#btn-cuspreview").click(function () {
 11         $("#Cusfile").click();
 12     });
 13
 14     $("#Cusfile").on("change", function () {
 15         FileCustomerInfo();
 16     });
 17 })
 18
 19 function FileCustomerInfo() {
 20     var formData = new FormData($("#uploadFormCus")[0]);
 21     $.ajax({
 22         type: "post",
 23         url: "/CustomerMember/BulkInserCustomer",
 24         dataType: "Json",
 25         data: formData,
 26         async: false,
 27         cache: false,
 28         contentType: false,
 29         processData: false,
 30         success: function (data) {
 31             if (data.result == "1") {
 32                 layer.msg("上传成功", { title: "温馨提示", icon: 1 });
 33                 if (data.result == "1") {
 34                     $("#btnSecoudCus").attr("disabled", false);
 35                 }
 36                 $("#filePathCus").val(data.Errmsg);
 37                 $("#batchflow-cstinput").val(data._fileName);
 38             } else {
 39                 layer.msg(data.Errmsg, { title: "温馨提示", icon: 0 });
 40             }
 41         },
 42         complete: function (xmlHttpRequest) {
 43             ////上传完成后重新注册change事件
 44             $("#Cusfile").replaceWith("<input class=‘mgtfile‘ id=‘Cusfile‘ name=‘logoFile‘ tabindex=‘-1‘ style=‘width: 200px; height: 200px; font-family: Times; font-size: 50px; right: 426px; cursor: pointer;‘ type=‘file‘>");
 45             $("#Cusfile").on("change", function () {
 46                 FileCustomerInfo();
 47             });
 48
 49
 50         }
 51     });
 52 }
 53
 54 function goIntoFirstStepCus(object) {
 55     $(object).hide();
 56     $(".cus-batchimport .first-a").css("display", "inline-block");
 57     $(".cus-batchimport .second-a").css("display", "none");
 58     $(".cus-batchimport .aupimg").css("display", "none");
 59     $(".cus-batchimport .final").css("display", "none");
 60     $(".cus-batchimport .cusbatchflow > ul >li").eq(0).addClass("active").siblings(".unload-secstep").removeClass("active1");
 61     $(".cus-batchimport .secondstep").hide();
 62     $(".cus-batchimport .unableimportemp").hide();
 63     $(".cus-batchimport .bulktit").hide();
 64     $(".cus-batchimport .firststep").show();
 65     $(".cus-batchimport .thirdstep").hide();
 66
 67     $("#btnSecoudCus").attr("disabled", true);
 68 }
 69
 70 function goIntoSecondStepCus(object) {
 71     $("#batchflow-cstinput").val("");
 72     $(object).hide();
 73     $(".cus-batchimport .second-a").css("display", "inline-block");
 74     $(".cus-batchimport .aupimg").css("display", "block");
 75     $(".cus-batchimport .final").css("display", "none");
 76     $(".cusbatchflow > ul >li").eq(0).removeClass("active").siblings(".unload-secstep").addClass("active1");
 77     $(".cus-batchimport .secondstep").show();
 78     $(".cus-batchimport .unableimportemp").show();
 79     $(".cus-batchimport .bulktit").show();
 80     $(".cus-batchimport .firststep").hide();
 81     $(".cus-batchimport .thirdstep").hide();
 82
 83     CheckCusInfo();
 84     $("#btnThirdCus").attr("disabled", true);
 85 }
 86
 87 function goIntothirdStepCus(object) {
 88     $(object).hide();
 89     $(object).siblings().css("display", "none");
 90     $(".cus-batchimport .final").css("display", "block");
 91     $(".cus-batchimport .cusbatchflow > ul >li").eq(1).removeClass("active1").siblings(".unload-laststep").addClass("active2");
 92     $(".cus-batchimport .secondstep").hide();
 93     $(".cus-batchimport .unableimportemp").hide();
 94     $(".cus-batchimport .bulktit").hide();
 95     $(".cus-batchimport .thirdstep").show();
 96
 97     InsertCustomer();
 98     $("#endBtnCus").attr("disabled", true);
 99 }
100
101 function initStepCus(object) {
102     $import = $(object).parents(".batch-import");
103     $import.modal(‘hide‘);
104     goIntoFirstStepCus(object);
105     $import.find(".cusbatchflow > ul >li").eq(2).removeClass("active");
106     resetFileInput($import.find(".mgtfile"));
107
108     ////上传完成后重新注册change事件
109     $("#Cusfile").replaceWith("<input class=‘mgtfile‘ id=‘Cusfile‘ name=‘logoFile‘ tabindex=‘-1‘ style=‘width: 200px; height: 200px; font-family: Times; font-size: 50px; right: 426px; cursor: pointer;‘ type=‘file‘>");
110     $("#Cusfile").on("change", function () {
111         FileCustomerInfo();
112     });
113 }
114 //清空file
115 function resetFileInput(file) {
116     file.after(file.clone().val(""));
117     file.remove();
118 }
119 //验证数据
120 function CheckCusInfo() {
121     var FilePath = $("#filePathCus").val();
122     $.ajax({
123         type: "post",
124         url: "/CustomerMember/CheckDataResult",
125         dataType: "Json",
126         data: { FilePath: FilePath },
127         success: function (data) {
128             var KeBulk = data.CoopList.length;
129             var FouBulk = data.Help.length;
130             $("#Yes_Nums").text("本次可导入客户数:" + KeBulk + "名");
131             $("#No_Nums").text("本次不可导入客户数:" + FouBulk + "名");
132             if (KeBulk != 0) { $("#btnThirdCus").attr("disabled", false); }
133             if (KeBulk == 0) { layer.msg("可导入客户数为0,返回重新上传", { title: "温馨提示", icon: 0 }); }
134
135             var tbody = "";
136             for (var i = 0; i < FouBulk; i++) {
137                 var trs = ""
138                 trs += "<tr><td></td>";
139                 trs += "<td><span title=‘" + data.Help[i].Row + "‘></span>" + data.Help[i].Row + "</td>";
140                 trs += "<td><span title=‘" + data.Help[i].TCNO + "‘></span>" + data.Help[i].TCNO + "</td>";
141                 trs += "<td><span title=‘" + data.Help[i].TCShortName + "‘></span>" + data.Help[i].TCShortName + "</td>";
142                 trs += "  <td class=‘txtred breakall‘>" + data.Help[i].MrrEsg + "<br></td>";
143                 trs += "</tr>";
144                 tbody += trs;
145             }
146             $("#CusErr").html("");
147             $("#CusErr").html(tbody);
148         }
149     });
150 }
151
152 //插入数据
153 function InsertCustomer() {
154     $.ajax({
155         type: "post",
156         url: "/CustomerMember/BulkInsertResult",
157         dataType: "Json",
158         data: null,
159         success: function (data) {
160             if (data.result != "0" && data.result != "-1") {
161                 var num = parseInt(data.result);
162                 $("#importCusNum").text(num);
163                 $("#endBtnCus").attr("disabled", false);
164             } else {
165                 layer.msg("导入异常,请重新导入", { title: "温馨提示", icon: 0 });
166             }
167         }
168     });
169 }

Controller控制器

 1 /// <summary>
 2         /// 上传模板文件
 3         /// </summary>
 4         /// <returns></returns>
 5         public ActionResult BulkInserCustomer()
 6         {
 7             HttpPostedFileBase fileData = Request.Files[0];
 8             if (fileData.ContentLength == 0)
 9             {
10                 return Json(new { result = 0, Errmsg = "请选择上传文件" });
11             }
12
13             if (fileData.FileName != "VV平台客户人员信息导入-精简模板.xls")
14             {
15                 return Json(new { result = 0, Errmsg = "文件有误" });
16             }
17
18             string strExtension = Path.GetExtension(fileData.FileName).ToLower();
19
20             if (strExtension == ".xls" || strExtension == ".xlsx")
21             {
22                 double dFileSiz = fileData.ContentLength;
23                 if (dFileSiz > 1024 * 1024 * 4)
24                 {
25                     return Json(new { result = 0, Errmsg = "文件过大" });
26                 }
27
28                 string new_fileName = Guid.NewGuid().ToString() + "_" + Path.GetFileName(fileData.FileName);
29
30                 //哈希码解决生成多个文件夹,提高上传效率
31                 int hash_code = new_fileName.GetHashCode();
32                 int dir1 = hash_code & 0xf;
33                 hash_code = hash_code >> 4;
34                 int dir2 = hash_code & 0xf;
35
36                 string targetFilePath = Path.Combine(Request.MapPath("~/UploadFile/BulkImport/"), dir1.ToString(), dir2.ToString());
37                 if (!Directory.Exists(targetFilePath))//文件夹不存在的时候创建
38                 {
39                     Directory.CreateDirectory(targetFilePath);
40                 }
41                 targetFilePath = Path.Combine(targetFilePath, new_fileName);//文件名与目录拼接
42                 fileData.SaveAs(targetFilePath);
43                 return Json(new { result = 1, Errmsg = targetFilePath, _fileName = fileData.FileName });
44
45             }
46             return Json(new { result = 0, Errmsg = "文件格式错误" });
47         }
48
49         private static List<TempMember> coopList;
50
51         public ActionResult CheckDataResult()
52         {
53             string fileName = Request["FilePath"];
54             List<BuliImportHelp> help = null;
55             coopList = CTMBLL.CheckCustomerData(fileName, curCompanyId, curStaffLgAccID, ref help);
56
57             return Json(new { CoopList = coopList, Help = help });
58         }
59
60         public ActionResult BulkInsertResult()
61         {
62             int result = 0;
63             result = CTMBLL.BulkCustomerInfo(coopList);
64
65             return Json(new { result = result });
66         }

BLL业务逻辑层

  1 /// <summary>
  2         /// 验证客户信息
  3         /// </summary>
  4         /// <param name="fileName"></param>
  5         /// <param name="companyID"></param>
  6         /// <param name="Uplist"></param>
  7         /// <returns></returns>
  8         public List<TempMember> CheckCustomerData(string fileName, long companyID, long TMAddUserId, ref List<BuliImportHelp> Uplist)
  9         {
 10             List<TempMember> list = new List<TempMember>();
 11             Uplist = new List<BuliImportHelp>();
 12             List<string> rTCNOTMPhone = new List<string>();
 13
 14             IWorkbook workbook;
 15             using (FileStream fsRead = File.OpenRead(fileName))
 16             {
 17                 workbook = new HSSFWorkbook(fsRead);
 18                 ISheet sheet = workbook.GetSheetAt(0);
 19
 20                 for (int r = 2; r <= sheet.LastRowNum; r++)
 21                 {
 22                     IRow currentRow = sheet.GetRow(r);
 23
 24                     Vehicle veModel = new Vehicle();
 25                     BuliImportHelp upModel = new BuliImportHelp();
 26
 27                     if (currentRow == null) { break; }
 28
 29                     string TCNO = currentRow.GetCell(0) == null ? "" : currentRow.GetCell(0).ToString().Trim();
 30                     string TCShortName = currentRow.GetCell(1) == null ? "" : currentRow.GetCell(1).ToString().Trim();
 31                     string TMName = currentRow.GetCell(2) == null ? "" : currentRow.GetCell(2).ToString().Trim();
 32                     string TMPhone = currentRow.GetCell(3) == null ? "" : currentRow.GetCell(3).ToString().Trim();
 33                     var TCID = TMDAL.GetTempCompanyID(TCNO, companyID);
 34                     if (TCNO == "" && TCShortName == "" && TMName == "" && TMPhone == "") { break; }
 35
 36                     if (TCNO == "" || TCShortName == "" || TMName == "" || TMPhone == "")
 37                     {
 38                         BuliImportHelp BuHelp = new BuliImportHelp();
 39                         BuHelp.Row = (r + 1).ToString();
 40                         BuHelp.TCNO = TCNO;
 41                         BuHelp.TCShortName = TCShortName;
 42                         BuHelp.TMName = TMName;
 43                         BuHelp.TMPhone = TMPhone;
 44                         if (TCNO == "") { BuHelp.MrrEsg = "客户编号不能为空"; }
 45                         else if (TCShortName == "") { BuHelp.MrrEsg = "客户简称不能为空"; }
 46                         else if (TMName == "") { BuHelp.MrrEsg = "成员姓名不能为空"; }
 47                         else if (TMPhone == "") { BuHelp.MrrEsg = "成员电话不能为空"; }
 48                         Uplist.Add(BuHelp);
 49                     }
 50                     else if (!UtilityHelp.isCellPhoneNumber(TMPhone))
 51                     {
 52                         BuliImportHelp BuHelp = new BuliImportHelp();
 53                         BuHelp.Row = (r + 1).ToString();
 54                         BuHelp.TCNO = TCNO;
 55                         BuHelp.TCShortName = TCShortName;
 56                         BuHelp.TMName = TMName;
 57                         BuHelp.TMPhone = TMPhone;
 58                         BuHelp.MrrEsg = "手机号码格式有误";
 59                         Uplist.Add(BuHelp);
 60                     }
 61                     else
 62                     {
 63                         bool count = true;
 64                         if (rTCNOTMPhone.IndexOf(TCNO + TMPhone) != -1)
 65                         {
 66                             BuliImportHelp BuHelp = new BuliImportHelp();
 67                             BuHelp.Row = (r + 1).ToString();
 68                             BuHelp.TCNO = TCNO;
 69                             BuHelp.TCShortName = TCShortName;
 70                             BuHelp.TMName = TMName;
 71                             BuHelp.TMPhone = TMPhone;
 72                             BuHelp.MrrEsg = "导入模板中手机号码重复";
 73                             Uplist.Add(BuHelp);
 74                             count = false;
 75                         }
 76                         else { rTCNOTMPhone.Add(TCNO + TMPhone); }
 77
 78
 79                         if (TCID == 0)
 80                         {
 81                             BuliImportHelp BuHelp = new BuliImportHelp();
 82                             BuHelp.Row = (r + 1).ToString();
 83                             BuHelp.TCNO = TCNO;
 84                             BuHelp.TCShortName = TCShortName;
 85                             BuHelp.TMName = TMName;
 86                             BuHelp.TMPhone = TMPhone;
 87                             BuHelp.MrrEsg = "客户编号不存在";
 88                             Uplist.Add(BuHelp);
 89                             count = false;
 90                         }
 91                         //if (TMDAL.IsExistTMPhone(TCID, TMPhone) >= 1)
 92                         //{
 93                         //    BuliImportHelp BuHelp = new BuliImportHelp();
 94                         //    BuHelp.Row = (r + 1).ToString();
 95                         //    BuHelp.TCNO = TCNO;
 96                         //    BuHelp.TCShortName = TCShortName;
 97                         //    BuHelp.TMName = TMName;
 98                         //    BuHelp.TMPhone = TMPhone;
 99                         //    BuHelp.MrrEsg = "手机号码已存在";
100                         //    Uplist.Add(BuHelp);
101                         //    count = false;
102                         //}
103                         if (count)
104                         {
105                             TempMember TM = new TempMember();
106                             TM.TMSerialNo = "";//编号生成
107                             TM.TMAddUserId = TMAddUserId;//操作人登陆ID
108                             TM.TMName = TMName;//客户成员姓名
109                             TM.TMPhone = TMPhone;//客户成员手机号
110                             TM.TMTCComID = TCID;//客户的公司ID
111                             TM.TMAddTime = DateTime.Now;//客户成员加入日期
112                             list.Add(TM);
113                         }
114                     }
115                 }
116             }
117             return list;
118         }
119
120         /// <summary>
121         /// 批量导入客户信息
122         /// </summary>
123         /// <param name="listModel"></param>
124         /// <returns></returns>
125         public int BulkCustomerInfo(List<TempMember> listModel)
126         {
127             return TMDAL.BulkCustomerInfo(listModel);
128         }

DAL数据访问层

  1 /// <summary>
  2         /// 根据客户编号获取客户公司ID
  3         /// </summary>
  4         /// <returns></returns>
  5         public long GetTempCompanyID(string TCNO, long companyID)
  6         {
  7             string sql = @"SELECT TCID FROM TempCompany WHERE [email protected] AND TCBelongComID = @companyID";
  8             try
  9             {
 10                 using(IDbCon)
 11                 {
 12                     long TCID = IDbCon.ExecuteScalar<long>(sql, new { TCNO = TCNO, companyID = companyID });
 13                     return TCID;
 14                 }
 15             }
 16             catch(Exception ex)
 17             {
 18                 UtilityHelp.WriteLog(ex, ex.ToString());
 19                 return 0;
 20             }
 21         }
 22
 23         /// <summary>
 24         /// 是否存在该客户
 25         /// </summary>
 26         /// <param name="customerNum"></param>
 27         /// <param name="customerAbbreviation"></param>
 28         /// <param name="coopID"></param>
 29         /// <returns></returns>
 30         public int IsHaveCustomer(string TCNO, long companyID)
 31         {
 32             string sql = "SELECT COUNT(*) FROM TempCompany WHERE [email protected] AND TCBelongType=1 AND [email protected]";
 33
 34
 35             using (IDbCon)
 36             {
 37                 try
 38                 {
 39                     return IDbCon.Query<int>(sql, new
 40                     {
 41                         TCNO = TCNO,
 42                         companyID = companyID
 43                     }).FirstOrDefault();
 44                 }
 45                 catch (Exception ex)
 46                 {
 47                     UtilityHelp.WriteLog(ex, ex.ToString());
 48                     return -1;
 49                 }
 50             }
 51
 52         }
 53
 54         /// <summary>
 55         /// 批量导入客户人员信息
 56         /// </summary>
 57         /// <param name="listModel"></param>
 58         /// <returns></returns>
 59         public int BulkCustomerInfo(List<TempMember> listModel)
 60         {
 61             string sql = @"INSERT INTO TempMember(TMSourceCome,TMAuditState,TMIsUsable,TMTCComID,TMSerialNo,TMName,TMSex,TMPhone,TMAddUserId,TMIsPhone,TMAddTime)
 62 VALUES(2,1,1,@TMTCComID,@TMSerialNo,@TMName,1,@TMPhone,@TMAddUserId,‘FALSE‘,@TMAddTime)";
 63
 64             int result = 0;
 65             IDbConnection iDbcon = base.IDbCon;
 66             if (iDbcon.State == ConnectionState.Closed)
 67             {
 68                 iDbcon.Open();
 69             }
 70
 71             using (var trans = iDbcon.BeginTransaction())
 72             {
 73                 try
 74                 {
 75                     result = iDbcon.Execute(sql, listModel, trans, null, CommandType.Text);
 76                     if (result == listModel.Count())
 77                     {
 78                         trans.Commit();
 79                         return result;
 80                     }
 81                     else
 82                     {
 83                         trans.Rollback();
 84                         return 0;
 85                     }
 86                 }
 87                 catch (Exception ex)
 88                 {
 89                     trans.Rollback();
 90                     UtilityHelp.WriteLog(ex, ex.ToString());
 91                     return -1;
 92                 }
 93                 finally
 94                 {
 95                     iDbcon.Close();
 96                 }
 97             }
 98
 99         }

BLL层需要引用NOPI

using NPOI.SS.UserModel;
using NPOI.HSSF.UserModel;

1、NuGet搜索Npoi并安装

2、添加引用将包引用进来

时间: 2024-10-27 01:19:04

批量导入Excle数据的相关文章

NPOI批量导入大量数据

简介:NPOI批量导入大量数据 使用SqlBulkCopy 可以将datatable里面的大量数据批量复制到数据库中,而不用担心性能问题,比系统中的传统做法(每20行数据执行一遍mydb.execute强多了) SqlBulkCopyColumnMapping(源列名,目标列名) 附代码如下: Try Using sqlblk As New SqlBulkCopy(MyDB.GetSqlConnectionString()) sqlblk.BatchSize = DtInput.Rows.Cou

MySQL批量导入Excel数据

MySQL批量导入Excel数据 1.确定需要导入数据的表名称以及字段,然后在新建的Excel表中,按照表字段正确排序:(注:(Excel文件的名称最好和数据库的名称一致,sheet表的名字最好和表名称一致,方便需要导入多张表数据时一一对应)) 2.在Excel表中,正确填写需要导入的数据,一行数据对应着数据库表中的一行记录:(注:各个字段的格式要求需要和数据库中的限制一样,避免出现差错) 3.收集好需要导入的数据后,点击保存.(注:导入的时候,Excel文件处于打开状态) 4.选中需要导入数据

JAVA操作Excle之Poi(二)批量导出Excle数据

批量导入: 界面JS:导出当前数据带参数 function exportStudent(){ $.messager.confirm('确认对话框', '确认要导出当前所有数据吗?', function(r){ if (r){ var name=$("#nameLike").val(); var i=$('#sc').combobox("getValue"); var sex=$("#sexLike").combobox("getValu

快速批量导入庞大数据到SQL SERVER数据库(ADO.NET)

原文地址:http://www.cnblogs.com/chenxizhang/archive/2008/11/11/1331060.html 如果你需要在程序中批量插入成千上万行的数据,你会怎么编写代码呢?最近在帮朋友调优这个的时候,总结了几种方法,并对其进行比较. 大概的界面如下,我模拟了一个客户资料表. 数据我是放在一个XML文件的,大约6734行.类似下面的格式 <?xml version="1.0" encoding="utf-8" ?> &l

导入excle数据将excle数据插入到数据库

实现功能是,用户可以直接导入对应数据,或者用户下载模板,填写数据,导入模板数据.easyui实现 前台页面 { text : '日清导入', iconCls : 'icon-print', handler : function(){ $('#import').dialog('open'); } } <div id = "import" title="员工信息导入" modal=true draggable=true align="center&quo

批量导入/更新 数据的几种方法

在工作中经常遇到要导入数据的场景. 1 导入全新的数据 2 导入的数据中库中可能已经存在,已经存在的数据不能覆盖,不能变更 3 导入的数据中库中可能已经存在,已经存在的数据主键等不能变化,同时需要更新这些数据的一些字段(比如:积分字段) 第一种最简单,最坑爹的是第三种了. 新手碰到这种问题往往一筹莫展,能想到的最直接的办法就是 一条条获取 ,然后判断,然后 update.这种方式的效率在少量数据的时候还没太大问题,当达到上千上万条时候问题就会出现了. 这种处理方式的资源开销和效率简直“惨绝人寰”

java 使用POI批量导入excel数据

一.定义 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 二.所需jar包: 三.简单的一个读取excel的demo 1.读取文件方法 /** * 读取出filePath中的所有数据信息 * @param filePath excel文件的绝对路径 * */ public static void getDataFromExcel(String filePath) { //String fileP

如何批量导入excel数据至数据库(MySql)--工具phpMyAdmin

之前由于数据储存使用excel保存了所有数据,经过初步数据筛选,数据量近4000条.一条一条录入数据库显然是不可行的.以下是我所操作的步骤: 1.只保留excel的数据部分,去除第一行的具体说明 2.文件另存为(.csv)格式 保存即可 3.把刚才存成csv格式的文件用TXT打开再次另存为 注意! 编码改成 UTF-8 这步必须要有,否则导入后极有可能出现乱码. 4.在phpmyadmin中按照数据顺序创建表,新建字段,字段名与你要导入的excel表字段关联且顺序相同. 5.点击"导入"

C#中实现excel文件批量导入access数据表中

一 .界面简单设计如下: 二 .代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.OleDb; using System.Data.S