使用C#连接到PowerPivot

WOP*_*OPR 8 c# excel powerpivot

是否可以连接到Excel .xlsx文件中的PowerPivot模型?(不托管在SharePoint网站上......只是本地文件).

必定是,因为Tableau可以做到这一点.

有人有任何线索吗?

gap*_*gap 8

简短回答:

答案很长:

  • Excel或PP(甚至可能是Office服务包?)的更新版本可能会破坏您的代码
  • 我们使用AMO成功连接到PP模型(将表添加到数据源视图,添加维度,添加度量以及从外部DB刷新模型).我们在codeplex(https://tabularamo2012.codeplex.com/)上找到Tabular AMO库非常有帮助.
  • 我们成功地使用ADO(但不是ADOMD)连接到PP模型来查询模型(例如,查询度量的值).

参考文献/学分:

细节:

  • 与@gobansaor一样,我们发现从已经与PP缓存建立连接的工作簿开始是有帮助的(必要吗?).例如,在通过AMO连接到PP缓存之前,我们确保连接处于活动状态:

    ThisWorkbook.Connections["PowerPivot Data"].Reconnect()

    要么

    ThisWorkbook.Connections["PowerPivot Data"].Refresh()

  • 我们用于AMO的连接字符串模板是:Provider=MSOLAP;Data Source=$Embedded$;Locale Identifier=1033;Location={0};SQLQueryMode=DataKeys我们用它填充了ThisWorkbook.FullName

  • 在@gobansaor之后,我们使用ADO通过ADO连接到多维数据集:

    ADODB.Recordset recordSet = new ADODB.Recordset();

    recordSet.Open("SELECT [Measures].[Min of Field1] ON COLUMNS FROM [Model]", ThisWorkbook.Connections["PowerPivot Data"].OLEDBConnection.ADOConnection);