2011-05-20 46 views
3

我正在創建一個打開多個excel文件並刷新它們的進程。我有代碼:從C打開Excel ODBC連接#

excel.Visible = true; 
    Microsoft.Office.Interop.Excel.Workbook workbook = excel.Workbooks.Open("Testfile.xlsx"); 

    workbook.RefreshAll(); 
    workbook.Save(); 

問題在於,因爲在這些工作表上,連接設置爲在刷新完成之前嘗試保存的背景中刷新。我知道我需要設置BackgroundQuery = false,但我不知道如何訪問已經存在的連接。任何幫助表示讚賞。

回答

0

我不知道很多C,所以語法可能是錯誤的,但它是您想要的worksheet.querytable對象:

Microsoft.Office.Interop.Excel.Worksheet ws = workbook.worksheets(1) 
Microsoft.Office.Interop.Excel.Worksheet qt = ws.querytables(1) 

ws.QueryTables(1).RefreshOnFileOpen = False 
ws.QueryTables(1).BackgroundQuery = False 
+0

所以我沒能得到這個特定代碼的工作,但通過試驗和錯誤我想通了: 的foreach(Microsoft.Office.Interop.Excel.WorkbookConnection我workbook.Connections) {系統。 Console.WriteLine(i.Name); i.OLEDBConnection.BackgroundQuery = false; } 的作品。 – dseisun 2011-05-23 19:50:16

1

所以我沒能得到這個特定的代碼工作,但通過反覆試驗,我發現:

foreach (Microsoft.Office.Interop.Excel.WorkbookConnection i in workbook.Connections) 
     { System.Console.WriteLine(i.Name); 
     i.OLEDBConnection.BackgroundQuery = false; 
     } 

的作品。