public void Load(List <TableRow> tables, List <ColumnRow> columns, string file) { var fileName = Path.GetFileNameWithoutExtension(file).Split('.'); var context = fileName[0]; var group = fileName[1]; var subGroup = fileName[2]; using (var package = ExcelPackage.Open(file)) { foreach (var worksheet in package.Workbook.Worksheets) { var sheetName = worksheet.Name; TableDescriptor descriptor; Action <string[]> addRow; if (worksheet.Name == "Tables") { descriptor = GetTableDescriptor(worksheet, ContentLoadType.Table); addRow = row => tables.Add(GetTableRow(context, group, subGroup, sheetName, row)); } else { descriptor = GetTableDescriptor(worksheet, ContentLoadType.Column); addRow = row => columns.Add(GetColumnRow(context, group, subGroup, sheetName, row)); } foreach (var data in OpenXmlManager.Read(package, descriptor)) { addRow(data); } } } }
public void Load(ContentLoaderConfiguration configuration, bool hasSchema = true) { using (var package = ExcelPackage.Open(configuration.FilePath)) { foreach (var worksheet in package.Workbook.Worksheets) { var type = GetType(worksheet.Name); if (type == ContentLoadType.None) { continue; } var descriptor = GetTableDescriptor(worksheet, hasSchema, type); var searcher = new Searcher(_tables, descriptor, type, hasSchema); var columnNames = OpenXmlManager.ReadColumnsNames(package, descriptor); IContentMapper <TTableContent> tableContentMapper = null; if (type.HasFlag(ContentLoadType.Table)) { tableContentMapper = new ContentMapper <TTableContent>(columnNames); } IContentMapper <TColumnContent> columnContentMapper = null; if (type.HasFlag(ContentLoadType.Column)) { columnContentMapper = new ContentMapper <TColumnContent>(columnNames); } var currentRow = descriptor.BeginRow; foreach (var data in OpenXmlManager.Read(package, descriptor)) { currentRow++; TTable table; TColumn column; searcher.Search(data, out table, out column); if (column != null && columnContentMapper != null) { columnContentMapper.Map(column.Content, data); continue; } if (!type.HasFlag(ContentLoadType.Table)) { //TODO: Log not found column if type is Column continue; } if (table != null && tableContentMapper != null) { tableContentMapper.Map(table.Content, data); // ReSharper disable once RedundantJumpStatement continue; } //TODO: Log not found table } } } }