NOPI\\Excel导入数据

//导入公司
        [HttpPost]
        public JsonResult ImportFile(HttpPostedFileBase Companyfile)
        {
            IWorkbook wb;
            string result = null;

            if(Companyfile.ContentLength<=0)
            {
                return Json(new MessageModel { Status = StatusCode.WARNING, Message = "导入失败,系统无法读取文件" }, JsonRequestBehavior.AllowGet);
            }
            var extension = Path.GetExtension(Companyfile.FileName);
            if(extension.Equals(".xlsx"))
            {
                wb = new XSSFWorkbook(Companyfile.InputStream);
                result = DoImport(wb);
            }
            if(extension.Equals(".xls"))
            {
                wb = new HSSFWorkbook(Companyfile.InputStream);
                result = DoImport(wb);
            }
            if (string.IsNullOrEmpty(result))
            {
                return Json(new MessageModel { Status = StatusCode.SUCCESS, Message = "导入成功" }, JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json(new MessageModel { Status = StatusCode.WARNING, Message = result }, JsonRequestBehavior.AllowGet);
            }
        }

        //导入判断
        private string DoImport(IWorkbook wb)
        {
            if(wb.NumberOfSheets ==0)
            {
                return "文件无内容";
            }
            ISheet sheet = wb.GetSheetAt(0);
            if(sheet.LastRowNum <1)
            {
                return "文件无内容";
            }
            IRow row = sheet.GetRow(0);
            string[] cellsname = { "公司名称(必填)" };
            if(row.Cells.Count !=cellsname.Count())
            {
                return "模板不正确,请下载正确模板文件";
            }
            List<string> error = new List<string>();
            foreach(var cell in row.Cells)
            {
                if (!cell.ToString().Equals(cellsname[row.Cells.IndexOf(cell)]))
                {
                    error.Add("第"+(row.Cells.IndexOf(cell)+1)+"列:"+cellsname[row.Cells.IndexOf(cell)]);
                }
            }
            if (error.Count > 0)
            {
                return "模板不正确,请下载正确模板文件";
            }
            //非空验证+数据验证
            var Companys = companyService.GetCompanyList(null).ToList();

            List<CompanyModel> CompanyNames = new List<CompanyModel>();

            for(int i=1;i<sheet.LastRowNum+1;i++)
            {
                IRow rows = sheet.GetRow(i);
                //公司名验证
                if(string.IsNullOrEmpty(rows.GetCell(0)?.ToString()))
                {
                    error.Add("第" + (i + 1) + "行," + cellsname[0] + "列值不能为空");
                }
                else if(rows.GetCell(0)?.ToString().Length>25)
                {
                    error.Add("第" + (i + 1) + "行," + cellsname[0] + "列值不能超过25");
                }
                else if(Companys.Where(_ => _.CompanyName.Equals(rows.GetCell(0)?.ToString())).Count() > 0)
                {
                    error.Add("第" + (i + 1) + "行," + cellsname[0] + "列中公司名称已存在");
                }

                if(error.Count==0)
                {
                    var companymodel = new CompanyModel()
                    {
                        CompanyName = rows.GetCell(0)?.ToString(),
                        CreateBy = CurrentUser.UserName
                    };
                    CompanyNames.Add(companymodel);
                }
            }
            if(error.Count>0)
            {
                return string.Join("</br>", error);
            }
            else
            {
                try
                {
                    var result = companyService.ImportCompany(new Hashtable() { { "CompanyList", CompanyNames } });
                    if (result)
                    {
                        return null;
                    }
                    else
                    {
                        return "导入失败";
                    }
                }
                catch (Exception ex)
                {
                    return "导入失败:" + ex.Message;
                }
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值