Как настроить формат отчета сводной таблицы в EPPlus? - PullRequest
6 голосов
/ 27 февраля 2012

Глядя на примеры, поставляемые с EPPlus, мне удалось создать сводную таблицу, но я не могу установить для нее правильный макет отчета.Я хочу, чтобы он был «табличным», а не «контурным» или чем-то еще.Мне кажется, EPPlus сейчас не поддерживает это, но, возможно, я что-то упустил?

Ответы [ 2 ]

7 голосов
/ 01 марта 2012

Оказалось, что это оказалось намного проще, чем я думал ... Установив «все» в «ложь» в таблице, представленной в виде таблицы. Итак, в основном:

pivotTable.Compact = false;
pivotTable.CompactData = false;
pivotTable.Indent = 0;
pivotTable.RowGrandTotals = false;
pivotTable.UseAutoFormatting = true;
pivotTable.ShowMemberPropertyTips = false;
pivotTable.DataOnRows = false;

field.Outline = false;
field.Compact = false;
field.ShowAll = false;
field.SubtotalTop = false;

Таким образом, я получаю сводную таблицу с табличным макетом.

4 голосов
/ 06 апреля 2013

Вот решение.Явным образом установите для всех полей (включая скрытые) компактные свойства и свойства структуры в значение false.

(from pf in pivot.Fields
             select pf).ToList().ForEach(f =>
                 {
                     f.Compact = false;
                     f.Outline = false;
                 });

Просто есть некоторый контекст, вот мой код для генерации центра.Он запущен из метаданных, но концепция та же.

        var pivotTabName = "Pivot";
        if (tab.Form.FormTabs.Count(ft => ft.FormTabPivotFields.Any()) > 1)
            pivotTabName = tab.DisplayName + " " + pivotTabName;

        var sheet = package.Workbook.Worksheets.Add(pivotTabName);

        const int pivotRow = 7;
        const int pivotCol = 1;

        var dataSourceRange = table.WorkSheet.Workbook.Names[table.Name + "_PivotSource"];
        var pivot = sheet.PivotTables.Add(sheet.Cells[pivotRow, pivotCol], dataSourceRange.Worksheet.Cells[dataSourceRange.Address],
                              pivotTabName.Replace(" ", string.Empty));

        const bool outline = false;
        const bool compact = false;
        const bool showAll = false;

        pivot.Compact = compact;
        pivot.CompactData = compact;
        pivot.Outline = outline;
        pivot.OutlineData = outline;
        pivot.Indent = 0;
        pivot.UseAutoFormatting = true;
        pivot.ShowMemberPropertyTips = false;
        pivot.DataOnRows = false;
        pivot.RowGrandTotals = false;
        pivot.ShowDrill = false;
        pivot.EnableDrill = false;
        pivot.RowGrandTotals = false;
        pivot.ColumGrandTotals = true;
        pivot.MultipleFieldFilters = true;

        (from pf in tab.FormTabPivotFields
         where pf.PivotFieldType.Name == "Page"
         orderby pf.DisplayOrder
         select pf.FormTabFactVcTypeDomain != null ? pf.FormTabFactVcTypeDomain.DisplayColumnName : pf.FormTabMeasureTypeColumn.DisplayColumnName).ToList().ForEach(fieldName =>
             {
                 var fld = pivot.PageFields.Add(pivot.Fields[fieldName]);
                 fld.Compact = compact;
                 fld.Outline = outline;
                 fld.ShowAll = showAll;
                 fld.SubtotalTop = false;
                 fld.SubTotalFunctions = eSubTotalFunctions.None;
             });

        (from pf in tab.FormTabPivotFields
         where pf.PivotFieldType.Name == "Row"
         orderby pf.DisplayOrder
         select pf.FormTabFactVcTypeDomain != null ? pf.FormTabFactVcTypeDomain.DisplayColumnName : pf.FormTabMeasureTypeColumn.DisplayColumnName).ToList().ForEach(fieldName =>
         {
             var fld = pivot.RowFields.Add(pivot.Fields[fieldName]);
             fld.Compact = compact;
             fld.Outline = outline;
             fld.ShowAll = showAll;
             fld.SubtotalTop = false;
             fld.SubTotalFunctions = eSubTotalFunctions.None;
         });

        (from pf in tab.FormTabPivotFields
         where pf.PivotFieldType.Name == "Column"
         orderby pf.DisplayOrder
         select pf.FormTabFactVcTypeDomain != null ? pf.FormTabFactVcTypeDomain.DisplayColumnName : pf.FormTabMeasureTypeColumn.DisplayColumnName).ToList().ForEach(fieldName =>
         {
             var fld = pivot.ColumnFields.Add(pivot.Fields[fieldName]);
             fld.Compact = compact;
             fld.Outline = outline;
             fld.ShowAll = showAll;
             fld.SubtotalTop = false;
             fld.SubTotalFunctions = eSubTotalFunctions.None;
         });

        (from pf in tab.FormTabPivotFields
         where pf.PivotFieldType.Name == "Data"
         orderby pf.DisplayOrder
         select new
             {
                 FieldName = pf.FormTabFactVcTypeDomain != null ? pf.FormTabFactVcTypeDomain.DisplayColumnName : pf.FormTabMeasureTypeColumn.DisplayColumnName,
                 Format = pf.FormTabMeasureTypeColumn != null ?
                    (pf.FormTabMeasureTypeColumn.MeasureFormatIndex == 1 ? pf.FormTab.MeasureColumnExcelNumberFormat1 : pf.FormTab.MeasureColumnExcelNumberFormat2)
                    : "General"
             }).ToList().ForEach(md =>
             {
                 var df = pivot.DataFields.Add(pivot.Fields[md.FieldName]);
                 df.Format = md.Format;
                 df.Field.Compact = compact;
                 df.Field.Outline = outline;
             });

        (from pf in pivot.Fields
             where pf.Axis == ePivotFieldAxis.None && pf.IsDataField == false
             select pf).ToList().ForEach(f =>
                 {
                     f.Compact = compact;
                     f.Outline = outline;
                 });

        // apply pivot table styling
        pivot.TableStyle = TableStyles.Medium15;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...