頁面代碼:ajax
<form id="form1" enctype="multipart/form-data"> <div style="float:right"> <button type="button" class="btn btn-primary" onclick="$('#fileUpload').click()" id="reviewFile">瀏覽</button> <button class="btn btn-primary" type="button" style="margin-left:5px;height:30px;" id="dataExport">批量導入</button> <input type="button" class="btn btn-primary" style="margin-left:5px;height:30px;" id="downLoad" value="下載模板"> </div> <div style="float:right;margin-top:5px"> <input id="fileUpload" name="fileUpload" type="file" style="display:none" /> <input id="fileText" type="text" class="form-control" disabled /> </div> <script> $("#fileUpload").change(function () { $("#fileText").val($(this).val()); }) </script> </form>
js代碼:數據庫
//導入excel數據 $("#dataExport").click(function () { var formData = new FormData($('form')[0]); $.ajax({ url: '/BaseInfoPage/GetAllDataFromExcel', type: 'POST', xhr: function () { return $.ajaxSettings.xhr(); }, data: formData, cache: false, contentType: false, processData: false, success: function (data) { if (data == "導入成功!") { layer.msg(data, { icon: 1, time: 5000 }, function () { location.reload(); //刷新父頁面 第二個參數設置msg顯示的時間長短 }); } else { layer.msg(data, { icon: 0, time: 5000 }, function () { return; }); } }, error: function (e) { layer.msg(e, { icon: 0, time: 5000 }, function () { return; }); } }); })
c#後臺代碼:c#
public string GetAllDataFromExcel(HttpPostedFileBase fileUpload) { if (fileUpload == null) { return "文件爲空!"; } try { List<LargeTransportLicenseParam> dataList = new List<LargeTransportLicenseParam>(); List<string> rNameLists = new List<string>(); List<string> ltlLists = new List<string>(); List<string> strLId = large_util.QueryLargeIds();//獲取全部大件運輸許可編號 List<string> strRname = large_util.QueryReName();//獲取全部省份 int result = 0; int result2 = 0; string fileExt = Path.GetExtension(fileUpload.FileName).ToLower(); string fileName = fileUpload.FileName; string filePath = CSysCfg.exFilePath; if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } //保存模板到服務器 fileUpload.SaveAs(filePath + "\\" + fileName); if (fileExt == ".xls" || fileExt == ".xlsx") { //1.建立IWorkbook IWorkbook Workbook; using (FileStream fileStream = new FileStream(filePath + "\\" + fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { //XSSFWorkbook 適用XLSX格式,HSSFWorkbook 適用XLS格式 if (fileExt == ".xls") { Workbook = new HSSFWorkbook(fileStream); } else if (fileExt == ".xlsx") { Workbook = new XSSFWorkbook(fileStream); } else { Workbook = null; } } Dictionary<List<string>, List<string>> dataDic = new Dictionary<List<string>, List<string>>(); //遍歷每一個Sheet for (int i = 0; i < Workbook.NumberOfSheets; i++) { //獲取每一個Sheet對象 ISheet sheet = Workbook.GetSheetAt(i); //獲取每一個工做表中的行 //第一,二行是列名捨去,從第三行開始讀取 LastRowNum 是當前表的總行數-1(注意) for (int j = 2; j <= sheet.LastRowNum; j++) { IRow row = sheet.GetRow(j); #region 數據賦值 判斷 if (row != null) { LargeTransportLicenseParam param = new LargeTransportLicenseParam(); param.loginId = Cookie.Value.Split(',')[0].ToString(); if (strLId.Contains(row.GetCell(0).ToString()))//判斷若是數據庫包含此值 { return "第" + (row.RowNum + 1) + "行第" + 1 + "列數據庫具備相同的值!"; } else if (row.GetCell(0) == null) { return "第" + (row.RowNum + 1) + "行第" + 1 + "值爲空!"; } else { param.ltlId = row.GetCell(0).ToString();//申請編號 必填 } //車牌號碼 if (row.GetCell(1) == null) { return "第" + (row.RowNum + 1) + "行第" + 2 + "值爲空!"; } else { param.ltlPlateId = row.GetCell(1).ToString();//車牌號碼 必填 } //開始時間 if (row.GetCell(2) == null) { return "第" + (row.RowNum + 1) + "行第" + 3 + "列值爲空!"; } else if (row.GetCell(2).CellType == CellType.String) { return "第" + (row.RowNum + 1) + "行第" + 3 + "列請輸入正確的日期格式!"; } else { param.ltlStarteTime = row.GetCell(2).DateCellValue.ToString();//當輸入文本日期時,經過DateCellValue獲得他的日期格式 } //結束時間 if (row.GetCell(3) == null) { return "第" + (row.RowNum + 1) + "行第" + 4 + "值爲空!"; } else if (row.GetCell(3).CellType == CellType.String) { return "第" + (row.RowNum + 1) + "行第" + 4 + "列請輸入正確的日期格式!"; } else { param.ltlEndTime = row.GetCell(3).DateCellValue.ToString();//結束時間 必填 } //途徑省份 if (row.GetCell(4) == null) { return "第" + (row.RowNum + 1) + "行第" + 5 + "值爲空!"; } string strs = row.GetCell(4).ToString(); string[] arr = strs.Split(','); if (arr[0] != null) { for (int k = 0; k < arr.Length; k++) { rNameLists.Add(arr[k]); ltlLists.Add(row.GetCell(0).ToString()); } } param.ltlPassageRoute = row.GetCell(5) == null ? "" : row.GetCell(5).ToString();//通行路線 param.ltlRoadTransportNum = row.GetCell(6) == null ? "" : row.GetCell(6).ToString();//道路運輸證號 param.ltlBrandModel = row.GetCell(7) == null ? "" : row.GetCell(7).ToString();//廠牌型號 ICell cell = row.GetCell(8);//車長(M) if (cell == null) { param.ltlCarLength = 0; } else if (row.GetCell(8).CellType == CellType.String) { return "第" + (row.RowNum + 1) + "行第" + 9 + "列數據類型錯誤,必須爲數值"; } else { param.ltlCarLength = Convert.ToInt32(row.GetCell(8).ToString());//車長(M) } ICell cell9 = row.GetCell(9);//車寬 if (cell9 == null) { param.ltlCarWidth = 0; } else if (row.GetCell(9).CellType == CellType.String) { return "第" + (row.RowNum + 1) + "行第" + 10 + "列數據類型錯誤,必須爲數值"; } else { param.ltlCarWidth = Convert.ToInt32(row.GetCell(9).ToString());//車長(M) } ICell cell10 = row.GetCell(10);//車高 if (cell10 == null) { param.ltlCarHeight = 0; } else if (row.GetCell(10).CellType == CellType.String) { return "第" + (row.RowNum + 1) + "行第" + 11 + "列數據類型錯誤,必須爲數值"; } else { param.ltlCarHeight = Convert.ToInt32(row.GetCell(10).ToString()); } ICell cell11 = row.GetCell(11);//整備質量 if (cell11 == null) { param.ltlCurbQuality = 0; } else if (row.GetCell(11).CellType == CellType.String) { return "第" + (row.RowNum + 1) + "行第" + 12 + "列數據類型錯誤,必須爲數值"; } else { param.ltlCurbQuality = Convert.ToInt32(row.GetCell(11).ToString()); } ICell cell12 = row.GetCell(12);//荷載質量 if (cell12 == null) { param.ltlLoadQuality = 0; } else if (row.GetCell(12).CellType == CellType.String) { return "第" + (row.RowNum + 1) + "行第" + 13 + "列數據類型錯誤,必須爲數值"; } else { param.ltlLoadQuality = Convert.ToInt32(row.GetCell(12).ToString()); } ICell cell13 = row.GetCell(13);//牽引質量 if (cell13 == null) { param.ltlTractionQuality = 0; } else if (row.GetCell(13).CellType == CellType.String) { return "第" + (row.RowNum + 1) + "行第" + 14 + "列數據類型錯誤,必須爲數值"; } else { param.ltlTractionQuality = Convert.ToInt32(row.GetCell(13).ToString()); } param.ltlRoadTransportImg = row.GetCell(14) == null ? "" : row.GetCell(14).ToString();//道路運輸證照片 param.ltlDrivingLicenseImg = row.GetCell(15) == null ? "" : row.GetCell(15).ToString();//機動車行駛證照片 ICell cell16 = row.GetCell(16);//車貨總重量(噸) if (cell16 == null) { return "第" + (row.RowNum + 1) + "行第" + 17 + "列值爲空!"; } else if (row.GetCell(16).CellType == CellType.String) { return "第" + (row.RowNum + 1) + "行第" + 17 + "列數據類型錯誤,必須爲數值"; } else { param.ltlTotalWeigth = Convert.ToInt32(row.GetCell(16).ToString()); } ICell cell17 = row.GetCell(17);//軸距 if (cell17 == null) { param.ltlWheelbase = 0; } else if (row.GetCell(17).CellType == CellType.String) { return "第" + (row.RowNum + 1) + "行第" + 18 + "列數據類型錯誤,必須爲數值"; } else { param.ltlWheelbase = Convert.ToInt32(row.GetCell(17).ToString()); } ICell cell18 = row.GetCell(18);//車貨最大長(M) if (cell16 == null) { return "第" + (row.RowNum + 1) + "行第" + 19 + "列值爲空!"; } else if (row.GetCell(18).CellType == CellType.String) { return "第" + (row.RowNum + 1) + "行第" + 19 + "列數據類型錯誤,必須爲數值"; } else { param.ltlMaxLength = Convert.ToInt32(row.GetCell(18).ToString()); } ICell cell19 = row.GetCell(19);//軸載 if (cell19 == null) { param.ltlAxleLoad = 0; } else if (row.GetCell(19).CellType == CellType.String) { return "第" + (row.RowNum + 1) + "行第" + 20 + "列數據類型錯誤,必須爲數值"; } else { param.ltlAxleLoad = Convert.ToInt32(row.GetCell(19).ToString()); } ICell cell20 = row.GetCell(20);//車貨最大寬(M) if (cell20 == null) { return "第" + (row.RowNum + 1) + "行第" + 21 + "列值爲空!"; } else if (row.GetCell(20).CellType == CellType.String) { return "第" + (row.RowNum + 1) + "行第" + 21 + "列數據類型錯誤,必須爲數值"; } else { param.ltlMaxWidth = Convert.ToInt32(row.GetCell(20).ToString()); } param.ltlGoodsInfo = row.GetCell(21) == null ? "" : row.GetCell(21).ToString();//貨物信息 ICell cell22 = row.GetCell(22);//車貨最大高(M) if (cell22 == null) { return "第" + (row.RowNum + 1) + "行第" + 23 + "列值爲空!"; } else if (row.GetCell(22).CellType == CellType.String) { return "第" + (row.RowNum + 1) + "行第" + 23 + "列數據類型錯誤,必須爲數值"; } else { param.ltlMaxHeight = Convert.ToInt32(row.GetCell(22).ToString()); } ICell cell23 = row.GetCell(23);//貨物重量(噸) if (cell23 == null) { param.ltlGoodsWeight = 0; } else if (row.GetCell(23).CellType == CellType.String) { return "第" + (row.RowNum + 1) + "行第" + 24 + "列數據類型錯誤,必須爲數值"; } else { param.ltlGoodsWeight = Convert.ToInt32(row.GetCell(23).ToString()); } ICell cell24 = row.GetCell(24);//貨物最大長(M) if (cell24 == null) { param.ltlGoodsMaxLenght = 0; } else if (row.GetCell(24).CellType == CellType.String) { return "第" + (row.RowNum + 1) + "行第" + 25 + "列數據類型錯誤,必須爲數值"; } else { param.ltlGoodsMaxLenght = Convert.ToInt32(row.GetCell(24).ToString()); } ICell cell25 = row.GetCell(25);//貨物最大寬(M) if (cell25 == null) { param.ltlGoodsMaxWidth = 0; } else if (row.GetCell(25).CellType == CellType.String) { return "第" + (row.RowNum + 1) + "行第" + 26 + "列數據類型錯誤,必須爲數值"; } else { param.ltlGoodsMaxWidth = Convert.ToInt32(row.GetCell(25).ToString()); } ICell cell26 = row.GetCell(26);//貨物最大高(M) if (cell26 == null) { param.ltlGoodsMaxHeight = 0; } else if (row.GetCell(26).CellType == CellType.String) { return "第" + (row.RowNum + 1) + "行第" + 27 + "列數據類型錯誤,必須爲數值"; } else { param.ltlGoodsMaxHeight = Convert.ToInt32(row.GetCell(26).ToString()); } ICell cell27 = row.GetCell(27);//輪胎數 if (cell27 == null) { param.ltlTireNumber = 0; } else if (row.GetCell(27).CellType == CellType.String) { return "第" + (row.RowNum + 1) + "行第" + 28 + "列數據類型錯誤,必須爲數值"; } else { param.ltlTireNumber = Convert.ToInt32(row.GetCell(27).ToString()); } ICell cell28 = row.GetCell(28);//軸數 if (cell28 == null) { param.ltlAxle = 0; } else if (row.GetCell(28).CellType == CellType.String) { return "第" + (row.RowNum + 1) + "行第" + 29 + "列數據類型錯誤,必須爲數值"; } else { param.ltlAxle = Convert.ToInt32(row.GetCell(28).ToString()); } param.ltlGoodsImg = row.GetCell(29) == null ? "" : row.GetCell(29).ToString();//車貨照片 param.ltlBusinessLicenseNum = row.GetCell(30) == null ? "" : row.GetCell(30).ToString();//經營許可證編號 param.ltlManagerName = row.GetCell(31) == null ? "" : row.GetCell(31).ToString();//經辦人姓名 param.ltlManagerIdCard = row.GetCell(32) == null ? "" : row.GetCell(32).ToString();//經辦人身份證 param.ltlManagerPhone = row.GetCell(33) == null ? "" : row.GetCell(33).ToString();//聯繫電話 param.ltlOpenImg = row.GetCell(34) == null ? "" : row.GetCell(34).ToString();//營業執照照片 param.ltlPowerImg = row.GetCell(35) == null ? "" : row.GetCell(35).ToString();//受權書照片 param.ltlManagerIdCardImg = row.GetCell(36) == null ? "" : row.GetCell(36).ToString();//受權書照片 param.ltlBusinessLicenseImg = row.GetCell(37) == null ? "" : row.GetCell(37).ToString();//經營許可證照片 dataList.Add(param); } else { return "暫無數據!"; } #endregion } } result = large_util.AddLargeInfo2(dataList); if (result == 1) { if (rNameLists != null && ltlLists != null) { result2 = large_util.Add2(ltlLists, rNameLists); } else { return "暫無數據!"; } } return "導入成功!"; } else { return "只能夠選擇Excel文件!"; } } catch (Exception ex) { throw ex; } }
//批量新增 public int AddLargeInfo2(List<LargeTransportLicenseParam> LargeData) { int result = 0; var lgId = ""; try { foreach (var item in LargeData) { lgId = item.ltlId; if (item != null) { string oldName = System.IO.Path.GetFileName(item.ltlOpenImg); string expendName = System.IO.Path.GetExtension(oldName); string filePath = ""; if (oldName != "" || oldName == null) { filePath = CSysCfg.lFilePath + "\\" + "ltlOpenImg" + item.ltlId + expendName; } string oldName1 = System.IO.Path.GetFileName(item.ltlPowerImg); string expendName1 = System.IO.Path.GetExtension(oldName1); string filePath1 = ""; if (oldName1 != "" || oldName1 == null) { filePath1 = CSysCfg.lFilePath + "\\" + "ltlPowerImg" + item.ltlId + expendName1; } string oldName2 = System.IO.Path.GetFileName(item.ltlManagerIdCardImg); string expendName2 = System.IO.Path.GetExtension(oldName2); string filePath2 = ""; if (oldName2 != "" || oldName2 == null) { filePath2 = CSysCfg.lFilePath + "\\" + "ltlManagerIdCardImg" + item.ltlId + expendName2; } string oldName3 = System.IO.Path.GetFileName(item.ltlBusinessLicenseImg); string expendName3 = System.IO.Path.GetExtension(oldName3); string filePath3 = ""; if (oldName3 != "" || oldName3 == null) { filePath3 = CSysCfg.lFilePath + "\\" + "ltlBusinessLicenseImg" + item.ltlId + expendName3; } string oldName4 = System.IO.Path.GetFileName(item.ltlRoadTransportImg); string expendName4 = System.IO.Path.GetExtension(oldName4); string filePath4 = ""; if (oldName4 != "" || oldName4 == null) { filePath4 = CSysCfg.lFilePath + "\\" + "ltlRoadTransportImg" + item.ltlId + expendName4; } string oldName5 = System.IO.Path.GetFileName(item.ltlDrivingLicenseImg); string expendName5 = System.IO.Path.GetExtension(oldName5); string filePath5 = ""; if (oldName5 != "" || oldName5 == null) { filePath5 = CSysCfg.lFilePath + "\\" + "ltlDrivingLicenseImg" + item.ltlId + expendName5; } string oldName7 = System.IO.Path.GetFileName(item.ltlGoodsImg); string expendName7 = System.IO.Path.GetExtension(oldName7); string filePath7 = ""; if (oldName7 != "" || oldName7 == null) { filePath7 = CSysCfg.lFilePath + "\\" + "ltlGoodsImg" + item.ltlId + expendName7; } LargeTransportLicense large = new LargeTransportLicense { ltl_Id = item.ltlId, ltl_PlateId = item.ltlPlateId, ltl_StarteTime = DateTime.Parse(item.ltlStarteTime), ltl_EndTime = DateTime.Parse(item.ltlEndTime), ltl_PassageRoute = item.ltlPassageRoute, ltl_BusinessLicenseNum = item.ltlBusinessLicenseNum, ltl_ManagerName = item.ltlManagerName, ltl_ManagerIdCard = item.ltlManagerIdCard, ltl_ManagerPhone = item.ltlManagerPhone, ltl_OpenImg = filePath, ltl_PowerImg = filePath1, ltl_ManagerIdCardImg = filePath2, ltl_BusinessLicenseImg = filePath3, ltl_RoadTransportNum = item.ltlRoadTransportNum, ltl_BrandModel = item.ltlBrandModel, ltl_CarLength = item.ltlCarLength * 1000, ltl_CarWidth = item.ltlCarWidth * 1000, ltl_CarHeight = item.ltlCarHeight * 1000, ltl_CurbQuality = item.ltlCurbQuality * 1000, ltl_LoadQuality = item.ltlLoadQuality * 1000, ltl_TractionQuality = item.ltlTractionQuality * 1000, ltl_RoadTransportImg = filePath4, ltl_DrivingLicenseImg = filePath5, ltl_TotalWeigth = item.ltlTotalWeigth * 1000, ltl_Wheelbase = item.ltlWheelbase, ltl_MaxLength = item.ltlMaxLength * 1000, ltl_AxleLoad = item.ltlAxleLoad, ltl_MaxWidth = item.ltlMaxWidth * 1000, ltl_GoodsInfo = item.ltlGoodsInfo, ltl_MaxHeight = item.ltlMaxHeight * 1000, ltl_GoodsWeight = item.ltlGoodsWeight * 1000, ltl_GoodsMaxLenght = item.ltlGoodsMaxLenght * 1000, ltl_GoodsMaxWidth = item.ltlGoodsMaxWidth * 1000, ltl_GoodsMaxHeight = item.ltlGoodsMaxHeight * 1000, ltl_TireNumber = item.ltlTireNumber, ltl_Axle = item.ltlAxle, ltl_GoodsImg = filePath7 }; using (Entities db = new Entities()) { db.LargeTransportLicense.Add(large); db.SaveChanges(); LogUtil.AddLogs("大件運輸許可", "添加", "添加大件運輸許可:" + item.ltlId); result = 1; } } else { result = 0; } } } catch (Exception ex) { LogUtil.AddLogs("大件運輸許可", "添加", "添加大件運輸許可:" + lgId + "失敗!"); LogUtil.AddErrorLogs("大件運輸許可", "添加", "添加大件運輸許可:" + lgId + "異常:" + ex.Message); throw; } return result; } //批量新增省份 public int Add2(List<string> lId, List<string> rNames) { int result = 0; string ltlId = "";//大件運輸id var reIds = "";//行政區劃id try { LargeRegionRelation datas = null; using (Entities db = new Entities()) { if (lId != null && rNames != null) { for (int i = 0; i < rNames.Count(); i++) { ltlId = lId[i]; string str = rNames[i]; string regStr = "省"; Regex r = new Regex(regStr); Match m = r.Match(str);//str是否包含省 string str1; int index = rNames[i].LastIndexOf("省");//獲取最後一個字符 if (index >= 0)//判斷省份最後一個字符是不是省 { if (m.Success)//如是則截取,再進行新增 { //綠色部分與紫色部分取一種便可。 str = str.Replace(regStr, ""); str1 = str.Substring(0, m.Index); reIds = (from p in db.Region where p.region_Name == str1 select p.region_id).FirstOrDefault(); datas = new LargeRegionRelation { lr_ltlId = ltlId, lr_RegionId = reIds }; db.LargeRegionRelation.Add(datas); db.SaveChanges(); result = 1; } } else { reIds = (from p in db.Region where p.region_Name == rNames[i] select p.region_id).FirstOrDefault(); datas = new LargeRegionRelation { lr_ltlId = ltlId, lr_RegionId = reIds }; db.LargeRegionRelation.Add(datas); db.SaveChanges(); result = 1; } } } else { result = 0; } } return result; } catch (Exception) { throw; } }