查看EPPlus附帶的示例我已經設法創建數據透視表,但我無法爲其設置正確的報表佈局。我希望它是'表格',而不是'大綱'或其他。對我來說,EPPlus現在看起來並不支持這一點,但也許我錯過了一些東西?如何在EPPlus中將數據透視表報告佈局設置爲表格?
5
A
回答
6
事實證明,這比我想象的要容易...通過將'everything'設置爲'false',表格呈現爲Tabular。所以基本上:
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;
這樣我得到與表格佈局的數據透視表。
3
以下是解決方案。將所有字段(包括隱藏字段)顯式設置爲精簡併將大綱屬性設置爲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;
相關問題
- 1. EPPlus數據透視表/圖表
- 2. 爲數據透視表設置宏
- 3. 獲得交叉表格報告 - 透視
- 4. EPPlus數據透視表 - 將值複製到新表
- 5. 將項目列表設置爲多個數據透視表
- 6. 如何將數據透視表方向設置爲使用EPPlus的列中的值?
- 7. 在React Native中設置表格佈局
- 8. 如何在代碼中設置視圖的佈局列(視圖在表格內)?
- 9. 將數組設置爲表格視圖?
- 10. 如何將多個表格數據顯示爲一個佈局
- 11. 在基礎SAS中生成非表格佈局的報告
- 12. 是否可以使用報告參數爲SSRS報告設置頁面佈局?
- 13. Apache Poi爲數據透視表設置數據字段樣式
- 14. 賈斯珀報告如何將來自JRResultSetDataSource的數據設置爲表組件
- 15. 如何在Android中正確設置表格佈局的方向
- 16. 如何將數據表設置爲WPF數據網格C#?
- 17. 一個數據透視表報表不能重疊另一個數據透視表報表
- 18. 如何將此表格佈局更改爲CSS佈局?
- 19. closedxml數據透視表報告過濾器默認值
- 20. 如何設置數據表過濾器等於數據透視表過濾器
- 21. 如何設置數據透視表字段數字格式細胞與Apache POI
- 22. 水晶透視數據報告8節
- 23. PowerBI - 如何設置流數據報告?
- 24. Oracle如何設置數據透視表SQL
- 25. 使用EPPLUS創建數據透視表過濾器
- 26. 如何在rdlc或ssrs報告中設置表格的最小行數?
- 27. 如何在jQuery中將嵌套JSON數據設置爲數據表格
- 28. Excel數據透視表:在分組數據透視表
- 29. 隱藏數據透視表中的數據透視表項
- 30. 如何在數據透視表中使用條件格式
當我嘗試這個主要工作,但是我得到'行標籤'作爲我的行的標題,而不是字段的名稱。我將「列標籤」作爲我列的標題而不是字段的名稱。你知道如何將它設置爲正確的描述嗎? – briddums 2013-01-15 21:40:08
對不起,不知道... – noocyte 2013-01-17 10:52:31