private void CreateAndAssignDataTable <T>(WorkbookSchema <T> workbook) { foreach (var sheet in workbook.Sheets) { sheet.InvalidData = new DataTable(sheet.Name); sheet.InvalidData.Columns.Add("RowNumber"); sheet.InvalidData.Columns.Add("WhyInvalid"); /* * sheet.InvalidData = new DataTable(sheet.Name); * sheet.InvalidData.Columns.Add("RowNumber"); * var lastIndex = 0; * foreach (var column in sheet.Columns) * { * sheet.InvalidData.Columns.Add(column.DBFieldName); * lastIndex = column.ColumnIndex; * } * * sheet.Columns.Add(new Column * { * ColumnIndex = lastIndex + 1, * DBFieldName = "RowNumber", * IsValueOptional = false * }); * sheet.InvalidData.Columns.Add("WhyInvalid"); */ } }
internal bool ValidateSchema <T>(List <string> sheetsPresent, WorkbookSchema <T> workbook) { workbook.InvalidSchema = new DataTable(); workbook.InvalidSchema.Columns.Add("Error", typeof(string)); workbook.InvalidSchema.Columns.Add("WhyInvalid", typeof(string)); RemoveSheetsNotFound(sheetsPresent, workbook.Sheets); MarkIfSheetIsValid(workbook.Sheets); if (!workbook.Sheets.Any()) { workbook.InvalidSchema.Rows.Add("N/A", "No Sheet found"); return(false); } var IsSchemaValid = true; foreach (var sheet in workbook.Sheets) { if (sheet.Valid) { continue; } var columnNotFound = sheet.Columns.Where(c => !c.Found && c.Required).ToList(); workbook.InvalidSchema.Rows.Add(sheet.Name, $"following required columns were not found: '{string.Join("','", columnNotFound.Select(c => c.NamesToFind.First()).ToList())}'"); IsSchemaValid = false; } CreateAndAssignDataTable(workbook); return(IsSchemaValid); }
private WorkbookSchema GetSchema() { lock (_workbookLock) { using (var excel = GetExcelPackage()) { var schema = new WorkbookSchema(excel); return(schema); } } }
public BaseDataImporter(string excelFilePath, string excelSchemaPath) { Workbook = WorkBookSchemaContext.GetSchema <T>(excelSchemaPath); Workbook.Path = SaveExcel(excelFilePath); }