private void AddRowsHeader(List<IRow> newRows) { if (this.IncludeHeader) { var rowHeader = new Row(); foreach (var colDefinition in this.ColumnsDefinition) rowHeader.AddColumnInRow(colDefinition.Name); newRows.Insert(0, rowHeader); } }
private void ChunkRows(List <IRow> rows) { var rowsSummaries = Rows.Where(f => f.GetType() == typeof(RowSummary)).Cast <RowSummary>().ToList(); foreach (var summary in rowsSummaries) { var newsLines = this.ChunksWords(summary.Text, summary.Width); if (newsLines.Count() > 1) { var newRowsForThisRow = new List <RowSummary>(); foreach (var newLine in newsLines) { var rowAdd = new RowSummary(); rowAdd.Width = summary.Width; rowAdd.PaddingLeft = summary.PaddingLeft; rowAdd.Text = newLine; newRowsForThisRow.Add(rowAdd); } var index = rows.IndexOf(summary); rows.Remove(summary); rows.InsertRange(index, newRowsForThisRow); } } var rowsNormal = rows.Where(f => f.GetType() == typeof(Row)).Cast <Row>().ToList(); foreach (var row in rowsNormal) { var newRowsForThisRow = new List <Row>(); var indexColumn = 0; foreach (var column in row.Columns) { var definition = this.ColumnsDefinition[indexColumn]; //column.Text = column.Text != null ? column.Text.TrimEnd('\r', '\n') : null; var newsLines = this.ChunksWords(column.Text, definition.Width).ToArray(); if (newsLines.Length > 1) { var indexNewRow = 0; foreach (var newLine in newsLines) { Row rowNew = newRowsForThisRow.ElementAtOrDefault(indexNewRow); if (rowNew == null) { rowNew = new Row(); rowNew.IsMainRow = indexNewRow == 0 ? true : false; foreach (var columnCopy in row.Columns) { if (rowNew.IsMainRow && columnCopy != column) { rowNew.AddColumnInRow(columnCopy.Text); } else if (columnCopy == column) { rowNew.AddColumnInRow(newLine); } else { rowNew.AddColumnInRow(""); } } newRowsForThisRow.Add(rowNew); } else { rowNew.Columns[indexColumn].Text = newLine; } indexNewRow++; } } indexColumn++; } if (newRowsForThisRow.Any()) { var index = rows.IndexOf(row); rows.Remove(row); rows.InsertRange(index, newRowsForThisRow); } } }