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); } } }