Comment puis-je obtenir l'adresse de la cellule d'Excel donné une ligne et un numéro de colonne par exemple p>
La rangée 2 et le col 3 devraient renvoyer c2 ... s'il vous plaît aider p>
6 Réponses :
public string GetCellAddress(int row, int col) {
return (char)((int)'A' + (row - 1)) + col.ToString();
}
Ce serait @ la réponse d'Alastair.
Cela retournera la mauvaise valeur: la rangée 1 Col 27 retournera A27 qui serait la colonne 1 rangée 27. Il suffit de changer la rangée et le col roulé [1 qui est également faux. Correct serait AA1.
Celui-ci (non testé) doit également fonctionner avec des adresses de colonne supérieures à 26: corrigé: l'adresse de colonne était en arrière p> p> p>
Cela reviendra BA1 pour Col 27 au lieu d'AA1.
cellules (2, 3) .Address p>
Je ne suis pas un gros utilisateur de VSTO C # - J'attends habituellement VBA. Cependant, la paire de fonctions suivantes pourrait vous être utile. Incertain s'ils peuvent être rationalisés d'autres:
public string RangeAddress(Excel.Range rng)
{
return rng.get_AddressLocal(false, false, Excel.XlReferenceStyle.xlA1,
missing, missing);
}
public string CellAddress(Excel.Worksheet sht, int row, int col)
{
return RangeAddress(sht.Cells[row, col]);
}
Parfait ! Merci beaucoup ! Ceci elle-même a fonctionné parfait pour moi :) gamme.Address [FALSE, FALSE, XL.XLREFERENCELYLE.XLA1];
Juste une amélioration, le col - était au mauvais endroit
J'utilise l'indice de rangée et de colonne à base de zéro. J'ai donc dû adapter le code des réponses antérieures aux suivantes. Il a fallu des essais et une erreur pour obtenir ce droit pour toutes les adresses possibles, c'est-à-dire. A1, Z2, AA2, ZZ10, ...
public string GetAddress(int col, int row)
{
col++;
StringBuilder sb = new StringBuilder();
do
{
col--;
sb.Insert(0, (char)('A' + (col % 26)));
col /= 26;
} while (col > 0);
sb.Append(row + 1);
return sb.ToString();
}
Voir aussi: Stackoverflow.com/questions/181596/...