2017-10-16 4 views
0

J'ai une application simple qui est nécessaire pour accéder aux fichiers Excel, injecter des données dans des cellules sélectionnées, et récupérer les résultats calculés de encore une autre cellule.Visual Studio vb - Convertir l'adresse de cellule (Excel) de "C15" à Row = 15 et Column = 3

Toutes les références de cellules sont reçues dans le pour (par exemple G35). Le problème est que la façon d'accéder aux cellules dans Visual Studio (autant que j'ai pu trouver) est en utilisant des valeurs Row et Column.

Existe-t-il un moyen simple de convertir le format lettre-nombre au format colonne-colonne? Ou, alternativement, accédez aux cellules en utilisant le format lettre-nombre.

J'apprécierais beaucoup vos suggestions.

+1

Si vous utilisez l'objet 'Worksheet.Range', vous pouvez spécifier des cellules par références de cellules Excel – SSS

+0

Oui @SSS C'est exactement ce que j'ai trouvé quelques minutes après avoir posté la question. Je voulais supprimer la question mais vous étiez trop rapide :-). Je vais le signaler quand même. – FDavidov

Répondre

0

Si vous utilisez l'objet Worksheet.Range, vous pouvez spécifier la cellule (s) par des références de cellules Excel

Pour convertir un index de colonne à base 0 à la tête de colonne équivalente, utilisez ce qui suit:

Private Function xlCol(ByVal col As Integer) As String 
    'col -= 1 'Uncomment this line if you are using 1-based column indices 
    Dim s As String = "" 
    If col < 0 Or col > 16383 Then 
    Throw New ArgumentException(String.Format("{0} is an invalid column", col), "col") 
    End If 
    If col >= 26^2 Then 
    s = Chr(64 + (col \ 26 \ 26) Mod 26) 
    End If 
    If col >= 26 Then 
    s &= Chr(64 + (col \ 26) Mod 26) 
    End If 
    s &= Chr(65 + (col Mod 26)) 
    Return s 
End Function 

Selon le document this link, une feuille de calcul Excel ne peut pas contenir plus de 16384 colonnes (index de colonne 16383 ou en-tête XFD).