使用C#连接到PowerPivot

8

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

一定可以,因为 Tableau 可以做到。

有人有什么线索吗?

3个回答

8

简短回答:

  • 是的

详细回答:

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

参考/致谢:

详情:

  • 像@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的方法,我们使用以下代码连接到了数据立方体:

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

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


你是否将AMO连接字符串传递给了Server对象?当我尝试连接到我的工作簿时,出现“无法建立连接,请确保服务器正在运行。”的错误。 - Kyle Hale

2

1
更好的方法是查看codeplex上的Excel刷新服务的C#源代码,该代码演示了如何打开和操作嵌入在Excel工作簿中的PowerPivot立方体。
请注意你所涉及的内容... Excel自动化有许多怪癖,并且在用作进入PowerPivot立方体的通道时往往不稳定。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接