2011-05-20 2 views
3

Je cherche à créer un processus qui ouvre plusieurs fichiers Excel et les actualise simplement. J'ai le code:Ouverture d'une connexion ODBC Excel à partir de C#

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

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

Le problème est que parce que sur ces feuilles de travail les connexions sont définis pour actualiser en arrière-plan, il tente de sauver avant la fin rafraîchissante. Je sais que j'ai besoin de définir BackgroundQuery = false, mais je ne sais pas comment accéder aux connexions déjà existantes. Toute aide est appréciée.

Répondre

0

Je ne sais pas beaucoup C, de sorte que la syntaxe peut-être tort, mais il est l'objet worksheet.querytable que vous voulez:

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

Je n'a pas réussi à obtenir ce code spécifique au travail, mais par tâtonnement, je compris que: foreach (Microsoft.Office.Interop.Excel.WorkbookConnection i dans workbook.Connections) {système. Console.WriteLine (i.Name); i.OLEDBConnection.BackgroundQuery = false; } fonctionne. – dseisun

1

Je n'a pas réussi à obtenir ce code spécifique au travail , mais par essais et erreurs j'ai compris que:

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

fonctionne.