NOPI\\Excel导入数据

来源:互联网 发布:化学实验模拟软件 编辑:程序博客网 时间:2024/05/29 12:14
//导入公司        [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;                }            }        }    }}