public List <Crate> GetExcelFileDescriptionCrates(byte[] fileAsByteArray, string selectedFilePath, string sheetName = null, bool isRunTime = false) { var ext = Path.GetExtension(selectedFilePath); List <Crate> crates = new List <Crate>(); // Read file from repository // Fetch column headers in Excel file var headersArray = ExcelUtils.GetColumnHeaders(fileAsByteArray, ext, sheetName); var isFirstRowAsColumnNames = true; var hasFirstRowHeader = ExcelUtils.DetectContainsHeader(fileAsByteArray, ext, sheetName); // Fetch rows in Excel file var rowsDictionary = ExcelUtils.GetTabularData(fileAsByteArray, ext, isFirstRowAsColumnNames, sheetName); Crate tableCrate = Crate.FromContent(RunTimeCrateLabel, new StandardTableDataCM(isFirstRowAsColumnNames, new TableRowDTO[0])); // default one if (rowsDictionary != null && rowsDictionary.Count > 0) { var rows = ExcelUtils.CreateTableCellPayloadObjects(rowsDictionary, headersArray, isFirstRowAsColumnNames); if (rows != null && rows.Count > 0) { tableCrate = Crate.FromContent(RunTimeCrateLabel, new StandardTableDataCM(hasFirstRowHeader, rows)); var fieldsCrate = TabularUtilities.PrepareFieldsForOneRowTable(isFirstRowAsColumnNames, rows, headersArray); if (fieldsCrate != null) { crates.Add(fieldsCrate); } } } crates.Add(tableCrate); return(crates); }