private WorkbookSheet CreateSheet(string workbookName, ISheet sheet) { Assert(workbookName, sheet); if (!GetHeader(sheet.GetRow(0), out var header)) { throw new InvalidFormatException($"WorkbookSheet '{sheet.SheetName}' in workbook '{workbookName}' has no workbookHeader. WorkbookHeader should be the first row with only text values."); } List <WorkbookColumn> columns = new List <WorkbookColumn>(header.Length); List <WorkbookRow> rows = new List <WorkbookRow>(sheet.LastRowNum); for (int i = 0; i < sheet.LastRowNum; i++) { WorkbookRow workbookRow = GetRow(sheet.GetRow(i), header.Length); rows.Add(workbookRow); } for (int i = 0; i < header.Length; i++) { WorkbookColumn tmpWorkbookColumn = GetColumn(i, header[i], ref rows); columns.Add(tmpWorkbookColumn); } return(new WorkbookSheet(sheet.SheetName, header, columns, rows)); }
/// <summary> /// Single file is a single workbook sheet. /// </summary> /// <param name="filePath">Path to single txt file.</param> /// <returns>Async tack with <see cref="WorkbookSheet"/>.</returns> private static async Task <WorkbookSheet> CreateSheet(string filePath) { string[] sheetLines = await TextFileLoader.LoadTxtFile(filePath).ConfigureAwait(false); WorkbookHeader header = new WorkbookHeader(GetRow(sheetLines[0])); List <WorkbookColumn> columns = new List <WorkbookColumn>(header.Length); List <WorkbookRow> rows = new List <WorkbookRow>(sheetLines.Length); // starts from 1 because line 0 is a header for (int i = 0; i < sheetLines.Length; i++) { WorkbookRow workbookRow = GetRow(sheetLines[i]); rows.Add(workbookRow); } for (int i = 0; i < header.Length; i++) { WorkbookColumn tmpWorkbookColumn = GetColumn(i, header[i], ref rows); columns.Add(tmpWorkbookColumn); } return(new WorkbookSheet(Path.GetFileName(filePath), header, columns, rows)); }