我正在尝试自动化excel加载项的测试,允许您根据数据透视表定义创建一些分析实体。 我能够使用cubefield对象创建随机数据透视表(我将随机字段添加到行,列和度量)但我还需要添加一些过滤,这里我被卡住了。 有没有办法获得cubefield项目列表?例如,当我在过滤器中有日期字段时 所有天的列表然后我想选择一些随机天来过滤。
这是我的代码,也许它不优雅,但它适用于我的目的。 我基本上抓住立方体区域检查它是否是尺寸或尺寸然后我正在设置 这是方向。
public void PivotTableFieldList()
{
_currentPivotTable = (Excel.PivotTable) _worksheet.PivotTables("PivotTable1");
_currentPivotTable.ManualUpdate = true;
List<Excel.CubeField> measureList = new List<Excel.CubeField>();
List<Excel.CubeField> dimensionList = new List<Excel.CubeField>();
foreach (Excel.CubeField field in _currentPivotTable.CubeFields)
{
if (field.CubeFieldType == Excel.XlCubeFieldType.xlMeasure && field.ShowInFieldList)
{
measureList.Add(field);
}
}
foreach (Excel.CubeField field in _currentPivotTable.CubeFields)
{
if (field.CubeFieldType != Excel.XlCubeFieldType.xlMeasure && field.ShowInFieldList)
{
dimensionList.Add(field);
}
}
Random dimRan=new Random();
dimRan.Next(0, dimensionList.Count);
Random mesRan = new Random();
mesRan.Next(0, measureList.Count);
dimensionList.ToArray();
measureList.ToArray();
Excel.CubeField[] measureRandomList= new Excel.CubeField[3];
Excel.CubeField[] dimensionRandomList = new Excel.CubeField[6];
for (int i = 0; i < 3; i++)
{
measureRandomList[i] = measureList[mesRan.Next(1, measureList.Count)];
}
for (int i = 0; i < 6; i++)
{
dimensionRandomList[i] = dimensionList[dimRan.Next(i, dimensionList.Count)];
}
for (int i = 0; i < 3; i++)
{
var field = measureRandomList[i];
var name = measureRandomList[i].Name;
field.Orientation= Excel.XlPivotFieldOrientation.xlDataField;
}
dimensionRandomList[0].Orientation= Excel.XlPivotFieldOrientation.xlRowField;
dimensionRandomList[1].Orientation = Excel.XlPivotFieldOrientation.xlColumnField;
dimensionRandomList[2].Orientation = Excel.XlPivotFieldOrientation.xlPageField;
dimensionRandomList[2].EnableMultiplePageItems=true;
//How can I get cubefield items list ?
}
答案 0 :(得分:0)
您可以按照以下方式过滤字段:
yourPivotField.CurrentPageName = string.Format("[{0}].[{1}].&[{2}]", SheetName, FieldName, FieldValue);
这会设置数据透视表的过滤器
不确定您是否正在搜索它。