iView匯入Excel資料到資料庫
阿新 • • 發佈:2019-02-05
1.前端使用的是iView的Upload上傳元件
2.後端使用的是ExcelPackage,當然可以使用NPOI
3.效果圖:
後端程式碼如下:
1)
//匯入 [HttpPost] public JsonResult Import() { AjaxResult result = new AjaxResult(); HttpPostedFileBase fostFile = Request.Files["file"]; Stream streamfile = fostFile.InputStream; try { using (ExcelPackage xlPackage = new ExcelPackage(streamfile)) { // get the first worksheet in the workbook ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets[1]; if (worksheet.Cells.Value == null || worksheet.Cells.Value == null) { result.msg = "表格沒有資料"; return Json(result); } int rowCounr = (int)Math.Ceiling((decimal)((decimal)worksheet.Cells.Count() / 8));//所有表格數 / 列數 = 行數 List<PUB_PROPERTY> lst = new List<PUB_PROPERTY>(); PubPopertyService svc = new PubPopertyService(); #region for (int i = 2; i <= rowCounr; i++) { PUB_PROPERTY entity = new PUB_PROPERTY(); if (string.IsNullOrWhiteSpace(worksheet.Cells[i, 2].Value.ToString())) { result.msg = "物業名稱不能為空"; return Json(result); } if (worksheet.Cells[i, 2].Value.ToString().Length > 32) { result.msg = "物業名稱不得超過32個字"; return Json(result); } if (string.IsNullOrWhiteSpace(worksheet.Cells[i, 3].Value.ToString())) { result.msg = "物業地址不能為空"; return Json(result); } if (worksheet.Cells[i, 3].Value.ToString().Length > 128) { result.msg = "物業地址不得超過128個字"; return Json(result); } if (string.IsNullOrWhiteSpace(worksheet.Cells[i, 4].Value.ToString())) { result.msg = "法定用途不能為空"; return Json(result); } if (worksheet.Cells[i, 4].Value.ToString().Length > 8) { result.msg = "法定用途不能超過8個字"; return Json(result); } if (worksheet.Cells[i, 5].Value == null) { result.msg = "用地面積不能為空"; return Json(result); } if (decimal.Parse(worksheet.Cells[i, 5].Value.ToString()) < 1 || decimal.Parse(worksheet.Cells[i, 5].Value.ToString()) > 999999999999) { result.msg = "請輸入合法的用地面積"; return Json(result); } if (worksheet.Cells[i, 6].Value == null) { result.msg = "建築面積不能為空"; return Json(result); } if (decimal.Parse(worksheet.Cells[i, 6].Value.ToString()) < 1 || decimal.Parse(worksheet.Cells[i, 6].Value.ToString()) > 999999999999) { result.msg = "請輸入合法的建築面積"; return Json(result); } if (worksheet.Cells[i, 7].Value == null) { result.msg = "戶數不能為空"; return Json(result); } if (decimal.Parse(worksheet.Cells[i, 7].Value.ToString()) < 1 || decimal.Parse(worksheet.Cells[i, 7].Value.ToString()) > 999999999999) { result.msg = "請填寫有效的戶數"; return Json(result); } if (worksheet.Cells[i, 8].Value == null) { result.msg = "入夥年月不能為空"; return Json(result); } if (worksheet.Cells[i, 8].Value.ToString().Length != 7) { result.msg = "請填寫有效的入夥年月"; return Json(result); } entity.PropName = worksheet.Cells[i, 2].Value.ToString(); entity.Address = worksheet.Cells[i, 3].Value.ToString(); entity.LegalUsage = worksheet.Cells[i, 4].Value.ToString(); entity.Area = decimal.Parse(worksheet.Cells[i, 5].Value.ToString()); entity.FloorArea = decimal.Parse(worksheet.Cells[i, 6].Value.ToString()); entity.HouseTotal = int.Parse(worksheet.Cells[i, 7].Value.ToString()); entity.BuiltYear = DateTime.Parse(worksheet.Cells[i, 8].Value.ToString()); entity.Creator = Current.Id; entity.CreatorName = Current.Name; entity.Created = DateTime.Now; entity.Updator = Current.Id; entity.UpdatorName = Current.Name; entity.Updated = DateTime.Now; entity.Status = 3; entity.GovId = Current.GovId; lst.Add(entity); int Id = 0; svc.Create(entity, out Id); result.code = 1; } #endregion } } catch (Exception ex) { log.ErrorFormat("[DSL-1027]匯入轄區物業資訊發生異常 #op={0}({1}).異常為:{3}", Current.Name, Current.Id,ex); result.msg = new ErrorItem(1027, "匯入轄區物業資訊失敗").ToString(); } return Json(result); }
前端程式碼如下:
1)
<Upload action="/Prop/Import" :format ="['xlsx']" :on-success="handleSuccess" :on-format-error="handleFormatError" :on-error="handleError" > <Button type="ghost" icon="ios-cloud-upload-outline">導 入</Button> </Upload>