用c#连接到PowerPivot

本文关键字:PowerPivot 连接 | 更新日期: 2023-09-27 18:15:34

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

必须是,因为Tableau可以这样做。

有人有什么线索吗?

用c#连接到PowerPivot

简短回答:

长答:

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

引用/学分:

  • https://gobansaor.wordpress.com
  • http://sqlblog.com/blogs/default.aspx
  • http://powerpivotgeek.com/2009/11/11/a-peek-inside-the-client-architecture/评论

细节:

  • 像@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连接到多维数据集:

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

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

您可以构建一个VSTO插件。

这是一个网站,帮助解释如何使用PowerPivot和VSTO。

http://blogs.msdn.com/b/analysisservices/archive/2011/08/04/how-to-build-a-vsto-based-powerpivot-workbook.aspx

更好的是,看看codeplex上的Excel Refresh Service的c#源代码——它演示了如何打开和操作嵌入在Excel工作簿中的PowerPivot数据集。

要意识到你正在进入什么…Excel自动化有很多怪癖,当用作进入PowerPivot立方体的管道时,往往不稳定。