private static void AddRow( this CellCursor cursor, DataStructure.Row row, ReportToWorkbookProjectionContext context, PassKind passKind, DataRowsFormat dataRowsFormat) { cursor.AddRowBase(row, context, passKind); if (cursor.HasMarker(BottomRightNonSummaryDataCellMarker)) { cursor.RemoveMarker(BottomRightNonSummaryDataCellMarker); } cursor.AddMarker(BottomRightNonSummaryDataCellMarker); if ((row.ChildRows != null) && row.ChildRows.Any()) { foreach (var childRow in row.ChildRows) { cursor.ResetColumn(); cursor.MoveDown(); if (passKind == PassKind.Formatting) { cursor.CanvassedRowRange.ApplyDataRowsFormat(dataRowsFormat); } cursor.AddRow(childRow, context, passKind, dataRowsFormat); } } if (row.CollapsedSummaryRows != null && row.CollapsedSummaryRows.Any()) { throw new NotSupportedException("collapsed summary rows are not supported"); } if (row.ExpandedSummaryRows != null) { foreach (var expandedSummaryRow in row.ExpandedSummaryRows) { cursor.ResetColumn(); cursor.MoveDown(); if (passKind == PassKind.Formatting) { cursor.CanvassedRowRange.ApplyDataRowsFormat(dataRowsFormat); } cursor.AddFlatRow(expandedSummaryRow, context, passKind); } } }
private static void AddDataRows( this CellCursor cursor, DataRows dataRows, ReportToWorkbookProjectionContext context, PassKind passKind) { if (dataRows == null) { return; } if (dataRows.Rows.Any()) { for (var x = 0; x < dataRows.Rows.Count; x++) { cursor.ResetColumn(); cursor.MoveDown(); if (x == 0) { cursor.AddMarker(TopLeftDataCellMarker); } if (passKind == PassKind.Formatting) { cursor.CanvassedRowRange.ApplyDataRowsFormat(dataRows.Format); } cursor.AddRow(dataRows.Rows[x], context, passKind, dataRows.Format); } cursor.AddMarker(BottomRightDataCellMarker); } }
private static void AddFooterRows( this CellCursor cursor, FooterRows footerRows, ReportToWorkbookProjectionContext context, PassKind passKind) { if (footerRows == null) { return; } if (footerRows.Rows.Any()) { foreach (var flatRow in footerRows.Rows) { cursor.ResetColumn(); cursor.MoveDown(); if (passKind == PassKind.Formatting) { cursor.CanvassedRowRange.ApplyFooterRowsFormat(footerRows.Format); } cursor.AddFlatRow(flatRow, context, passKind); } } }
private static void AddTreeTable( this CellCursor cursor, TreeTable treeTable, ReportToWorkbookProjectionContext context, PassKind passKind) { if (passKind == PassKind.Formatting) { // Format whole table cursor.CanvassedRange.ApplyTableFormat(treeTable.Format); // Format columns var tableColumns = treeTable.TableColumns; var topLeftDataCellReference = cursor.HasMarker(TopLeftDataCellMarker) ? cursor.GetMarkedCellReference(TopLeftDataCellMarker) : null; var bottomRightNonSummaryDataCellReference = cursor.HasMarker(BottomRightNonSummaryDataCellMarker) ? cursor.GetMarkedCellReference(BottomRightNonSummaryDataCellMarker) : null; var bottomRightHeaderCellReference = cursor.HasMarker(BottomRightHeaderCellMarker) ? cursor.GetMarkedCellReference(BottomRightHeaderCellMarker) : null; foreach (var column in tableColumns.Columns) { var wholeColumnRange = cursor.Worksheet.GetRange(cursor.RowNumber, cursor.MaxRowNumber, cursor.ColumnNumber, cursor.ColumnNumber); // ReSharper disable once PossibleNullReferenceException var dataCellsRange = topLeftDataCellReference == null ? null : cursor.Worksheet.GetRange(topLeftDataCellReference.RowNumber, bottomRightNonSummaryDataCellReference.RowNumber, cursor.ColumnNumber, cursor.ColumnNumber); var lastHeaderCellToLastNonSummaryDataCellRange = bottomRightHeaderCellReference == null ? null : dataCellsRange == null ? null : cursor.Worksheet.GetRange(bottomRightHeaderCellReference.RowNumber, bottomRightNonSummaryDataCellReference.RowNumber, cursor.ColumnNumber, cursor.ColumnNumber); // Individual column format will override the format applied to all table columns, // that's why we first apply the table columns format and then the individual column's format. wholeColumnRange.ApplyColumnFormat(dataCellsRange, lastHeaderCellToLastNonSummaryDataCellRange, tableColumns.ColumnsFormat); wholeColumnRange.ApplyColumnFormat(dataCellsRange, lastHeaderCellToLastNonSummaryDataCellRange, column.Format); cursor.MoveRight(); } cursor.ResetColumn(); } // Add rows cursor.AddTableRows(treeTable.TableRows, context, passKind); }
private static void AddHeaderRows( this CellCursor cursor, HeaderRows headerRows, ReportToWorkbookProjectionContext context, PassKind passKind) { if (headerRows == null) { return; } if (headerRows.Rows.Any()) { for (var x = 0; x < headerRows.Rows.Count; x++) { cursor.ResetColumn(); cursor.MoveDown(); if ((x == 0) && (passKind == PassKind.Data)) { cursor.AddMarker(TopLeftHeaderCellMarker); } if (passKind == PassKind.Formatting) { cursor.CanvassedRowRange.ApplyHeaderRowsFormat(headerRows.Format); } cursor.AddFlatRow(headerRows.Rows[x], context, passKind); } if (passKind == PassKind.Data) { cursor.AddMarker(BottomRightHeaderCellMarker); } } }