2011-05-20 45 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; 
     } 

的作品。