private void Init(ISheetImporterData data) { data.GetSize(out int numColumns, out int numRows); RawSheetRow dataRow = null; for (int row = 1; row < numRows + 1; ++row) { var rowId = data.GetCell(0, row); if (!string.IsNullOrEmpty(rowId)) { dataRow = new RawSheetRow(); Rows.Add(dataRow); } var dict = new Dictionary <string, string>(); for (int col = 0; col < numColumns; ++col) { var columnName = data.GetCell(col, 0); var valueStr = data.GetCell(col, row); if (!string.IsNullOrEmpty(valueStr)) { dict.Add(columnName, valueStr); } } dataRow.Add(dict); } }
public static void GetSize(this ISheetImporterData data, out int numColumns, out int numRows) { int col = 0, row = 0; // First row is configuration variables // First column is data keys // Find number of configuration variables while (true) { var value = data.GetCell(col, 0); if (string.IsNullOrEmpty(value)) { break; } ++col; } numColumns = col; // Find number of data keys while (true) { bool isEmptyRow = Enumerable.Range(0, numColumns).All(i => { var value = data.GetCell(i, row + 1); return(string.IsNullOrEmpty(value)); }); if (isEmptyRow) { break; } ++row; } numRows = row; }
public RawSheet(ISheetImporterData data) { Rows = new List <RawSheetRow>(); Init(data); }