Connecting to PowerPivot with C#

只愿长相守 提交于 2019-12-18 11:13:46

问题


Is it possible to connect to a PowerPivot model in an Excel .xlsx file? (Not hosted on a SharePoint site... just the local file).

It must be, since Tableau can do it.

Anyone have any clues?


回答1:


Short answer:

  • Yes

Long answer:

  • Updated versions of either Excel or PP (maybe even Office service packs?) could break your code
  • We were successful in connecting to the PP model using AMO (to add tables to the data source view, add dimensions, add measures, and refresh the model from external DBs). We found Tabular AMO library on codeplex (https://tabularamo2012.codeplex.com/) to be VERY helpful.
  • We were successful in connecting to the PP model using ADO (but not ADOMD) to query the model (for instance, query the value of a measure).

References/Credits:

  • http://blog.gobansaor.com/
  • http://sqlblog.com/blogs/default.aspx
  • http://powerpivotgeek.com/2009/11/11/a-peek-inside-the-client-architecture/#comments

Details:

  • Like @gobansaor, we found that starting with a workbook which already had a connection to the PP cache was helpful (necessary?). Before connecting to the PP cache via AMO for instance, we make sure the connection is alive:

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

    or

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

  • The connection string template we used for AMO was: Provider=MSOLAP;Data Source=$Embedded$;Locale Identifier=1033;Location={0};SQLQueryMode=DataKeys and we filled that in with ThisWorkbook.FullName

  • Following @gobansaor, we connected to the cube via ADO using:

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

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




回答2:


You can build a VSTO addin.

Here's a site that helps explain working with PowerPivot and VSTO.

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




回答3:


Better yet, take a look at the C# source code of the Excel Refresh Service on codeplex - which demonstrates how to open and manipulate PowerPivot cubes that are embedded in Excel workbooks.

Be aware of what you're getting into... Excel automation has many quirks and tends to be unstable when used as a conduit into a PowerPivot cube.



来源:https://stackoverflow.com/questions/8242557/connecting-to-powerpivot-with-c-sharp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!