用c#连接到PowerPivot
本文关键字:PowerPivot 连接 | 更新日期: 2023-09-27 18:15:34
是否可以在Excel .xlsx文件中连接到PowerPivot模型?(没有托管在SharePoint网站上…只是本地文件)。
必须是,因为Tableau可以这样做。
有人有什么线索吗?
简短回答:
- 对
长答:
- 更新版本的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立方体的管道时,往往不稳定。