【问题标题】:Prevent Excel from modifying dataconnection防止 Excel 修改数据连接
【发布时间】:2017-11-24 19:53:56
【问题描述】:

我有一个奇怪而令人沮丧的情况:我创建了一个基于 SQL Server 表的 PowerPivot。我选择了 SQLNCLI11 提供程序。

在我的笔记本电脑上一切正常,但是当一位同事在他自己的电脑上打开工作表并想要刷新数据时,Excel 抱怨提供程序未在计算机上注册。这是第一个奇怪的事情:我安装了具有正确位版本的 SQL Server Native Client 提供程序。但即使重新启动,该消息仍然存在。

为了解决这种情况,我使用中描述的步骤更改了提供程序 https://support.microsoft.com/en-us/help/2955369/cannot-modify-the-odata-connections-in-an-excel-2013-powerpivot-workbo

现在,奇怪而令人沮丧的事情是:当我(或我的同事)刷新数据时,Excel 会更改回提供程序。为什么?

原来的情况是这样的:

然后我更改连接:提供程序更改为 SQL Server 的 MS Ole DB 提供程序,并且我还将数据源更改为 IP 地址:

我保存 Excel 工作表,将其关闭,然后重新打开。数据源仍然是修改后的数据源。但是:当我刷新数据然后再次检查数据源时,它已经恢复到原来的情况了。

所以基本上问题是:如何永久更改现有连接?

现在我们开始了:知道为什么我的同事 pc 一直抱怨 SQLNCLI11 提供程序未注册吗?

我使用的是 Excel 2016,SQL Server 版本是 2014 SP2。

感谢您的宝贵时间

【问题讨论】:

  • 我能想到的东西太多了,它们可以(可能)动态地改变文件。所以,我(个人)会选择简单的解决方案,并通过创建一个宏来确保连接是我想要的:在创建正确的连接时记录你的行为,然后你可以在每次打开文件时运行这个宏(确保连接正确且数据已更新)。

标签: sql-server excel powerpivot


【解决方案1】:

由于您提到 excel 2016,一种选择是使用 Power Query 加载您的 Power Pivot 模型。唯一的缺点是增强查询意味着重新创建连接/表,如果您已经创建了很多计算/数据透视表,这可能会很痛苦。

使用 Power Query 时,它将处理所有连接/数据转换,而 power pivot 只关心返回的结果集。这意味着您可以通过编辑查询在数据源类型之间进行交换,例如从 excel --> MS Access --> SQL 数据库作为连接类型,无需在 Power Pivot 中重新创建连接/表。

Power Query 中的大多数操作都将通过 GUI 完成,但有时能够编辑脚本会很有用。一个很好的例子是引用一个参数表,其中包含连接位置和过滤条件等信息。

下面的查询脚本作为示例连接到一个 excel 文件,其位置定义为脚本中的文件变量。

Source = Excel.Workbook(File.Contents(File_Parameter), null, true),
Data = Source{[Item="Data",Kind="Sheet"]}[Data],

我可以将其换成使用不同的参数并稍微修改语法来处理 MS Access

Source = Access.Database(File.Contents(DB_Location), [CreateNavigationProperties=true]),
Data = Source{[Schema="",Item="factSellout"]}[Data]

【讨论】:

    【解决方案2】:

    好的,我终于找到了一种(肮脏的)方法让事情重新开始:我将 xlsx 扩展名重命名为 zip 并更改了 xl\connections.xml。我改变了所有的

    <x15:oledbPr connection
    

    元素与正确的提供者并存储我的密码。保存更改后它再次工作。

    我还发现,如果您在其中一个查询中更改别名,您将无法再刷新数据。起初我只是删除了查询并重新添加了它。但是,您也可以在 XML 文件中手动更改它。只需更改

    <x15:dbCommand
    

    同一connections.xml中的元素。

    【讨论】:

      猜你喜欢
      • 2013-10-08
      • 1970-01-01
      • 2012-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-17
      • 2011-07-11
      • 1970-01-01
      相关资源
      最近更新 更多