2010-02-04 7 views
1

Bonjour,
J'ai une chose plutôt bizarre qui se passe avec une feuille de calcul Excel que je crée via .Net. je charge un classeur existantGénérer Excel à l'aide de .Net faire des choses étranges

Dim _xlApp As New Excel.Application 
Dim _xlWorkbook As Excel.WokBook = _xlApp.Workbooks.Open(_templateFileName) 

ensemble pour être visible avant le peuplant (à des fins de débogage)

_xlApp.Visible = True 

Je vais ensuite pour remplir le modèle existant.

Private Sub GenerateOceanFreightGrid() 

     Dim columnCount As Integer = 4 ' _standardColumnCount 
     Dim columnInsertPosition As Integer = 5 

     If MyBooleanValue() Then 
      _xlSheet.Columns(4).Insert() 
      _xlSheet.Cells(7, 4) = "My Header Value" 
      columnInsertPosition += 1 
      columnCount += 1 
     End If 

Quand je mis un point d'arrêt sur la « Private Sub Gen .. » ligne, et pas dans la ligne de code en ligne, il insère une nouvelle colonne pour chaque variable déclarée, donc dans ce cas, il insère deux colonnes avant même qu'il ne frappe la ligne "If MyBooleanValue() ..." (je peux le voir se produire parce que l'application Excel est visible). Cependant, si je ne mets pas un point d'arrêt et que je laisse le code passer directement à travers cela ne se produira pas.
Il n'y a pas de multi-threading qui se passe ou quoi que ce soit d'autre qui aurait un impact sur le code. Mon travail évident est de ne pas définir le point d'arrêt, je me demandais juste si quelqu'un a déjà vu cela avant et pour quelle raison? Merci

+0

Bienvenue dans le développement Office! –

+0

ouais c'est un rire une minute jusqu'à présent :) – Ben

+0

nous nous battons avec Excel interop depuis des années. différentes versions différentes service packs - c'était dur comme l'enfer. Et nous avons abandonné, simplement acheté un composant tiers. –

Répondre

1

Je suppose que cela est dû à une propriété que le débogueur évalue pour être utile - mais c'est une propriété mauvaise avec l'effet secondaire d'ajouter une colonne.

Je suppose que vous n'avez aucune variable de surveillance qui pourrait le faire explicitement?

+0

Merci Jon, mais non, je n'ai aucun ensemble de variables de surveillance. Il est très étrange, car si je n'initialise pas les variables dans l'exemple ci-dessus, il insère seulement une colonne voyous, mais si je le fais (comme dans l'exemple), il ajoute 3 colonnes. Je n'arrive pas à comprendre pourquoi il ajoute une colonne par variable et pourquoi cela ne se produit que lorsque l'on passe le code. Très étrange. – Ben

+0

également désactiver l'évaluation de la propriété implicite dans les paramètres du débogueur. Débogueur évalue ToString() –

+0

Merci @Sergey et @Jon, j'ai désactivé l'évaluation implicite des propriétés et maintenant il fait la "bonne chose". À votre santé. – Ben

Questions connexes