【问题标题】:Refresh power Query in Excel在 Excel 中刷新电源查询
【发布时间】:2014-06-05 21:48:47
【问题描述】:

我有一个 Excel 应用程序,它使用 power query 从 SharePoint 获取合并列表。我已将属性设置为在打开 excel 应用程序时刷新,以刷新数据集。当我手动打开 excel 时,它会刷新并获得更新的数据。但是,我在我的 winform 应用程序中使用这个 excel 来获取数据。 所以为了刷新数据,我试图从代码中打开和关闭excel。

但是数据没有得到刷新,而且它搞砸了电源查询插件。当我再次手动打开 Excel 表时,运行代码后出现错误“查询未运行,或无法打开数据库表。”

而且功能区上不再显示 Power Query。 下面是我用来打开和关闭 Excel 应用程序的代码:

 Excel.Application excelApp = new Excel.Application();
        excelApp.Visible = true;
        string workbookPath = @"C:\Test\Test.xlsx";
        Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(workbookPath,
                0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "",
                true, false, 0, true, false, false);
        Excel.Sheets excelSheets = excelWorkbook.Worksheets;
        string currentSheet = "Sheet1";
        Excel.Worksheet excelWorksheet = (Excel.Worksheet)excelSheets.get_Item(currentSheet);
        Excel.Range excelCell = (Excel.Range)excelWorksheet.get_Range("A1", "A2");
        excelWorkbook.Close(true, "Test.xlxs", null); 

这是刷新数据的最佳方式吗?

【问题讨论】:

标签: c# excel sharepoint


【解决方案1】:

如果您的 Power Query/BI 实施不允许使用上一张海报所建议的数据管理网关 (DMG),您可能需要探索一款名为 Power Update 的新软件来将更新设置为计划.

此外,如果这是要求的一部分,您也许可以在 C# 应用程序中运行他们的 Excel 数据源更新任务。

【讨论】:

    【解决方案2】:

    有两点需要注意。

    1. excel 中的连接默认为后台(异步)刷新,这会使您的程序刷新代码不确定。
    2. Power Query 进行轮询以更新查询刷新的状态。因此,如果您在刷新后立即关闭工作簿,则状态将没有机会更新,并且下次打开工作簿时,状态将指示错误。

    为了获得可靠的刷新,您需要将连接设置为不再后台刷新,因此刷新会阻塞,然后在刷新后休眠一小段时间 让 Power Query 的轮询发现刷新已完成。

    我会把你的脚本改成这个

    Excel.Application excelApp = new Excel.Application();
        excelApp.Visible = true;
        string workbookPath = @"C:\Test\Test.xlsx";
        Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(workbookPath,
                0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "",
                true, false, 0, true, false, false);
        excelWorkbook.RefreshAll();
        System.Threading.Thread.Sleep(2000);
        excelWorkbook.Close(true, "Test.xlxs", null); 
    

    您可以通过循环查询并将它们设置为不像此 vba 代码那样进行后台刷新,从而使此代码变得更好 https://social.technet.microsoft.com/Forums/en-US/9cbdd731-d139-49ee-8f30-89de371ba74d/multiple-queries-run-one-after-another?forum=powerquery#df2947a7-585a-4f75-8337-e0ead5068254

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-17
      • 2020-05-26
      • 1970-01-01
      • 2015-08-31
      • 2012-03-29
      • 1970-01-01
      • 2021-10-25
      • 2017-04-29
      相关资源
      最近更新 更多