public static SourceField GetInstance(CacheField cacheField, int index) { IList <PivotTableGroup> pivotGroupings = new List <PivotTableGroup>(); PivotTableGroup pivotTableGroup = PivotTableGroup.GetInstance(cacheField, index); if (pivotTableGroup != null) { pivotGroupings.Add(pivotTableGroup); } return(new SourceField() { Index = index, Name = cacheField.Name, NumberFmtId = cacheField.NumberFormatId ?? 0, // ECMA-376 Appendix B.2 Line 1284 shows that default value is "false" Items = SharedItems.GetInstance(cacheField), PivotGrouping = pivotGroupings }); }
private static void BuildGroup(PivotTableGroup group, int level, int levels, Stack <bool> startRow, StringBuilder builder) { if (startRow.Count == 0) { builder.AppendFormat("<tr>"); startRow.Push(true); } int rowSpan = group.Count + (group.HasChildGroups && group.ShowTotal == ShowTotal.Top ? 1 : 0); builder.AppendFormat(@"<td{1} class=""group"">{0}</td>", group.Name, rowSpan > 1 ? string.Format(@" rowSpan=""{0}""", rowSpan) : ""); if (group.ShowTotal == ShowTotal.Top) { BuildPrefixCells(level, levels, builder); BuildValues(group.FormatValues, builder); builder.Append("</tr>"); startRow.Pop(); } BuildGroups(group.ChildGroups, level + 1, levels, startRow, builder); if (group.ShowTotal == ShowTotal.Bottom && !group.HasChildGroups) { BuildValues(group.FormatValues, builder); builder.Append("</tr>"); startRow.Pop(); } if (group.ShowTotal == ShowTotal.Bottom && !group.ContainsNoOrSingleChild(true)) { builder.Append(@"<tr class=""total"">"); builder.AppendFormat(@"<td class=""group"">{0}</td>", group.TotalName); BuildPrefixCells(level, levels, builder); BuildValues(group.FormatValues, builder); builder.Append("</tr>"); } }
private static void BuildGroup(PivotTableGroup group, int level, int levels, Stack<bool> startRow, StringBuilder builder) { if (startRow.Count == 0) { builder.AppendFormat("<tr>"); startRow.Push(true); } int rowSpan = GetRowSpan(group); builder.AppendFormat(@"<td{1} class=""group"">{0}</td>", group.Name, rowSpan > 1 ? string.Format(@" rowSpan=""{0}""", rowSpan) : ""); if (group.ShowTotal == ShowTotal.Top) { BuildPrefixCells(level, levels, builder); BuildValues(group.FormatValues, builder); builder.Append("</tr>"); startRow.Pop(); } BuildGroups(group.Groups, level + 1, levels, startRow, builder); if (group.ShowTotal == ShowTotal.Bottom && !group.HasChildGroups) { BuildValues(group.FormatValues, builder); builder.Append("</tr>"); startRow.Pop(); } if (group.ShowTotal == ShowTotal.Bottom && !group.ContainsNoOrSingleChild(true)) { builder.Append(@"<tr class=""total"">"); builder.AppendFormat(@"<td class=""group"">{0}</td>", group.TotalName); BuildPrefixCells(level, levels, builder); BuildValues(group.FormatValues, builder); builder.Append("</tr>"); } }
private static int GetRowSpanIncludingTotals(PivotTableGroup group) { var childRowSpans = group.Groups.Sum(cg => GetRowSpanIncludingTotals(cg)); return(Math.Max(childRowSpans, 1) + (/*group.ShowTotal == ShowTotal.Bottom &&*/ !group.ContainsNoOrSingleChild(true) ? 1 : 0)); }
private static int GetRowSpan(PivotTableGroup group) { return(group.Groups.Sum(cg => GetRowSpanIncludingTotals(cg))); }
private static int GetRowSpanIncludingTotals(PivotTableGroup group) { var childRowSpans = group.Groups.Sum(cg => GetRowSpanIncludingTotals(cg)); return Math.Max(childRowSpans, 1) + (/*group.ShowTotal == ShowTotal.Bottom &&*/ !group.ContainsNoOrSingleChild(true) ? 1 : 0); }
private static int GetRowSpan(PivotTableGroup group) { return group.Groups.Sum(cg => GetRowSpanIncludingTotals(cg)); }