Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }