public override async Task <ExcelFileRecord> Load(string url, TypedParseToJsonOptions options)
        {
            var container = await reader.Load(url, options.SheetsOptions);

            var validationResult = new Dictionary <int, SheetValidationResult>();
            var sheets           = container.Sheets;

            foreach (var sheet in sheets)
            {
                var sheetOptions = GetOptions(sheet, options);
                var request      = new SheetOnTypeParseRequest
                {
                    LongName       = sheetOptions?.SheetName,
                    MappingOptions = sheetOptions,
                    NamingStrategy = options.NamingStrategy,
                    RootType       = options.OnType(),
                    Sheet          = sheet
                };
                var result = await sheetValidator.Validate(request);

                validationResult[sheet.Index] = result;
            }

            return(new ExcelFileRecord(url, sheets, validationResult, options));
        }
Example #2
0
        public async Task <SheetValidationResult> Validate(string url, int sheetIndex            = 0,
                                                           JsonNamingStrategy jsonNamingStrategy = JsonNamingStrategy.None,
                                                           string[] headerMap = null, bool ignoreFirstRow = true)
        {
            loaded         = true;
            ignoreFirst    = ignoreFirstRow;
            namingStrategy = jsonNamingStrategy;
            map            = headerMap;
            var sheet = await reader.LoadSheet(url, sheetIndex, map);

            if (sheet == null)
            {
                return(SheetValidationResult.SheetNotPresent());
            }

            var request = new SheetOnTypeParseRequest
            {
                MappingOptions = new SheetMappingOptions
                {
                    Ignore    = ignoreFirst,
                    Map       = headerMap,
                    IndexAsId = true
                },
                NamingStrategy = namingStrategy,
                RootType       = typeof(T),
                Sheet          = sheet
            };

            sheetValidationResult = await sheetValidator.Validate(request);

            return(sheetValidationResult);
        }