Excel VSTO: исключение при создании сводной таблицы OLAP - VisibleItemsList - PullRequest
0 голосов
/ 23 декабря 2018

Я хочу создать сводную таблицу Excel, связанную с базой данных SSAS, в надстройке VSTO C #.Я могу установить поля и фильтры, но не выбор видимых элементов для поля строки / столбца.

Это код, который у меня сейчас есть, последняя строка выдает ошибку:

System.Runtime.InteropServices.COMException: 'Исключение из HRESULT: 0x800A03EC

PivotCache pivotCache =
        worksheet.Application.ActiveWorkbook.PivotCaches().Add(XlPivotTableSourceType.xlExternal, Missing.Value);
pivotCache.Connection = "OLEDB;Provider=MSOLAP.8;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=Sample_SSAS;Data Source=localhost;MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error;Update Isolation Level=2";
pivotCache.MaintainConnection = true;
pivotCache.CommandText = "SampleCube";
pivotCache.CommandType = XlCmdType.xlCmdCube;
pivotCache.MissingItemsLimit = XlPivotTableMissingItems.xlMissingItemsNone;


PivotTables pivotTables = (PivotTables)worksheet.PivotTables(Missing.Value);
var cell = worksheet.Cells[1, 1];
PivotTable pivotTable = pivotTables.Add(pivotCache, cell, "PivotTable1",
            Missing.Value, Missing.Value);

CubeField cubeField = pivotTable.CubeFields["[Date].[Year - Quarter - Month - Date]"];
cubeField.Orientation = Excel.XlPivotFieldOrientation.xlRowField;

var pivotField = pivotTable.PivotFields("[Date].[Year - Quarter - Month - Date].[Year]");


var visibleItems = new string[]
            {
    "[Date].[Year - Quarter - Month - Date].[Year].&[2015]",
    "[Date].[Year - Quarter - Month - Date].[Year].&[2016]",
    "[Date].[Year - Quarter - Month - Date].[Year].&[2017]",
    "[Date].[Year - Quarter - Month - Date].[Year].&[2018]"
            };

// throws System.Runtime.InteropServices.COMException: 'Exception from HRESULT: 0x800A03EC'
pivotField.VisibleItemsList = visibleItems;

Я делаю это потому, что записал макрос, создающий сводную таблицу, и попытался реплицировать этот сегмент VBA.:

With ActiveSheet.PivotTables("PivotTable2").CubeFields( _
    "[Date].[Year - Quarter - Month - Date]")
    .Orientation = xlRowField
    .Position = 1
End With
ActiveSheet.PivotTables("PivotTable2").PivotFields( _
    "[Date].[Year - Quarter - Month - Date].[Year]").VisibleItemsList = Array( _
    "[Date].[Year - Quarter - Month - Date].[Year].&[2008]", _
    "[Date].[Year - Quarter - Month - Date].[Year].&[2009]", _
    "[Date].[Year - Quarter - Month - Date].[Year].&[2010]")

Я, видимо, что-то упускаю.

...