【问题标题】:Connecting to PowerPivot with C#使用 C# 连接到 PowerPivot
【发布时间】:2011-11-23 12:57:12
【问题描述】:

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

必须如此,因为 Tableau 可以做到。

谁有线索?

【问题讨论】:

    标签: c# excel powerpivot


    【解决方案1】:

    简答:

    • 是的

    长答案:

    • Excel 或 PP 的更新版本(甚至可能是 Office 服务包?)可能会破坏您的代码
    • 我们成功地使用 AMO 连接到 PP 模型(将表添加到数据源视图、添加维度、添加度量以及从外部数据库刷新模型)。我们发现 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 连接到立方体:

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

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

    【讨论】:

    • 您是否将 AMO 连接字符串传递给服务器对象?我收到“无法建立连接。确保服务器正在运行。”当我尝试连接到我的工作簿时出错。
    【解决方案2】:

    您可以构建 VSTO 插件。

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

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

    【讨论】:

      【解决方案3】:

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

      请注意您所涉及的内容... Excel 自动化有许多怪癖,并且在用作 PowerPivot 多维数据集的管道时往往不稳定。

      【讨论】:

        猜你喜欢
        • 2014-08-29
        • 1970-01-01
        • 1970-01-01
        • 2014-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-31
        • 2017-10-21
        相关资源
        最近更新 更多