//导入公司
[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;
}
}
}
}
}
NOPI\\Excel导入数据
最新推荐文章于 2024-06-17 23:31:56 发布