コード例 #1
0
        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");
                 */
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 private WorkbookSchema GetSchema()
 {
     lock (_workbookLock)
     {
         using (var excel = GetExcelPackage())
         {
             var schema = new WorkbookSchema(excel);
             return(schema);
         }
     }
 }
コード例 #4
0
 public BaseDataImporter(string excelFilePath, string excelSchemaPath)
 {
     Workbook      = WorkBookSchemaContext.GetSchema <T>(excelSchemaPath);
     Workbook.Path = SaveExcel(excelFilePath);
 }