2009-05-13 10 views
2

Pourquoi ce travail:VSTO écrit dans une cellule dans Excel!

((Excel.Worksheet)Application.ActiveSheet).get_Range("A1", "A1").Value2 = text; 

Mais cela ne veut pas:

Excel.Worksheet activeSheet = ((Excel.Worksheet)Application.ActiveSheet); 
activeSheet.Cells[0, 0] = text; 

je besoin de le faire la deuxième façon que je dois faire une boucle avec rowIndex et colIndex. Comment puis je faire ça?

Je reçois l'erreur:

An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in mscorlib.dll Additional information: Exception from HRESULT: 0x800A03EC

Répondre

9

La seule chose que vous êtes absent (autre que l'utilisation de 1 index basés) est de jeter la référence de cellule à une gamme explicitement:

Excel.Worksheet activeSheet = ((Excel.Worksheet)Application.ActiveSheet); 
int endRow = 5; 
int endCol = 6; 

for(int idxRow = 1; idxRow <= endRow; idxRow++) 
{ 
    for(int idxCol = 1; idxCol <= endCol; idxCol) 
    { 
     ((Excel.Range)activeSheet.Cells[idxRow, idxCol]).Value2 = "Kilroy wuz here"; 
    } 
} 
+2

+1 Je voulais juste faire savoir aux gens qui lisent ceci le moyen le plus rapide de peupler une grande quantité de valeurs de cellules en utilisant un objet [,] par exemple: http://stackoverflow.com/a/3847094/495455 –

+0

Avec C# 4 et ' mot-clé dynamique on peut maintenant juste: dynamic cell = sheet.Cells [1, 1]; cell.Value2 = "salut là"; More - http://msdn.microsoft.com/fr-fr/magazine/gg598922.aspx – MickyD

Questions connexes