public List <string> ReadExelArchives(List <HttpPostedFileBase> archives) { List <string> result = new List <string>(); foreach (var archive in archives) { if (archive.ContentType == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { ExelParseResultModel archiveWeatherData = exelParseService.ReadExelArchive(archive); if (archiveWeatherData.WeatherData.Count != 0) { db.WeatherData.AddRange(archiveWeatherData.WeatherData); db.SaveChangesAsync(); } if (archiveWeatherData.ErrorMessages.Count == 0) { result.Add(string.Format(ErrorTextTemplates.SUCCESS, archive.FileName)); } else { foreach (var error in archiveWeatherData.ErrorMessages) { result.Add(error); } } } else { result.Add(string.Format(ErrorTextTemplates.FILE_TYPE_ERROR, archive.FileName)); } } return(result); }
public ExelParseResultModel ReadExelArchive(HttpPostedFileBase archive) { logger.Info("TRY PARSE {0}", archive.FileName); ExelParseResultModel result = new ExelParseResultModel(); List <Weather> weatherData = new List <Weather>(); XSSFWorkbook xssfwb = new XSSFWorkbook(archive.InputStream); bool allDataIsCorrect = true; int sheetNum = xssfwb.NumberOfSheets; for (int num = 0; num < sheetNum; num++) { ISheet sheet = xssfwb.GetSheetAt(num); if (!HeaderCheck(sheet)) { logger.Error("Can't read sheet {0}", sheet.SheetName); result.ErrorMessages.Add(string.Format(ErrorTextTemplates.INCORRECT_HEADER, archive.FileName)); break; } if (!ReadWeatherData(sheet, weatherData)) { allDataIsCorrect = false; } } if (!allDataIsCorrect) { result.ErrorMessages.Add(string.Format(ErrorTextTemplates.PARSE_ERROR, archive.FileName)); } result.WeatherData = weatherData; return(result); }