1. 程式人生 > >iView匯入Excel資料到資料庫

iView匯入Excel資料到資料庫

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>