private static Tuple <List <BaoYangPackagePromotionDetail>, string, string, byte[]> ConvertExcelToList(HttpFileCollectionBase files) { var message = string.Empty; var result = null as List <BaoYangPackagePromotionDetail>; byte[] outBuffer = null; if (files.Count <= 0) { return(Tuple.Create(result, "请先上传文件", string.Empty, new byte[0])); } var file = files[0]; if (file.ContentType != "application/vnd.ms-excel" && file.ContentType != "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { return(Tuple.Create(result, "请上传Excel文件", string.Empty, new byte[0])); } var stream = file.InputStream; var buffer = new byte[stream.Length]; stream.Read(buffer, 0, buffer.Length); outBuffer = buffer; var sha1Value = GetSha1Value(buffer); var manager = new VipBaoYangPackageManager(); if (manager.IsUploaded(sha1Value)) { return(Tuple.Create(result, "文件已经上传过,请不要重复上传", string.Empty, new byte[0])); } var workBook = new XSSFWorkbook(new MemoryStream(buffer)); var sheet = workBook.GetSheetAt(0); var temp = ConvertExcelToList(sheet); result = temp.Item1; message = temp.Item2; if (!string.IsNullOrEmpty(message)) { return(Tuple.Create(result, message, string.Empty, new byte[0])); } if (!result.Any()) { return(Tuple.Create(result, "Excel内容为空", sha1Value, new byte[0])); } var repetitionNumber = result.GroupBy(x => x.MobileNumber) .Where(x => x.Count() > 1) .Select(x => x.Key).ToList(); if (repetitionNumber.Any()) { message = $"{string.Join(",", repetitionNumber)}以上手机号重复, 请确认"; } return(Tuple.Create(result, message, sha1Value, outBuffer)); }