2012-02-27 7 views

risposta

6

Questo risultato è stato molto più semplice di quanto pensassi ... Impostando "tutto" su "falso", la tabella è stata resa come tabulare. Quindi in pratica:

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; 

In questo modo ottengo la tabella pivot con layout tabellare.

+0

Quando provo questo funziona principalmente, tuttavia ottengo "Row Labels" come intestazione per le mie righe anziché il nome del campo. Ricevo "Colonne etichette" come intestazione per le mie colonne anziché il nome del campo. Sai come impostarlo nella descrizione corretta? – briddums

+0

Scusa, non ne ho idea ... – noocyte

3

Ecco la soluzione. Impostare in modo esplicito tutti i campi (compresi i campi nascosti) compatti e le proprietà del profilo su false.

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

Solo così c'è un contesto, ecco il mio codice per generare il pivot. È eseguito su metadati ma il concetto è lo stesso.

 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; 
Problemi correlati