[英]Refresh power Query in Excel
我有一個Excel應用程序,可以使用Power查詢從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);
這是刷新數據的最佳方法嗎?
如果您的Power Query / BI實現不允許使用以前的海報所建議的數據管理網關(DMG),則您可能需要探索一個名為Power Update的新軟件,以將更新設置為計划。
另外,如果這是要求的一部分,則可以從C#應用程序中運行其Excel數據源更新任務。
有兩件事要注意。
為了獲得可靠的刷新,您將需要將連接設置為不再后台刷新 ,因此刷新將被阻止,然后在刷新后也睡眠一小段時間,以使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/zh-CN/9cbdd731-d139-49ee-8f30- 89de371ba74d /多個查詢在另一個后面運行?forum = powerquery#df2947a7-585a-4f75-8337-e0ead5068254
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.