9
votes

Comment puis-je obtenir l'adresse de la cellule d'Excel

Comment puis-je obtenir l'adresse de la cellule d'Excel donné une ligne et un numéro de colonne par exemple

La rangée 2 et le col 3 devraient renvoyer c2 ... s'il vous plaît aider


1 commentaires

Voir aussi: Stackoverflow.com/questions/181596/...


6 Réponses :


-3
votes
public string GetCellAddress(int row, int col) {
        return (char)((int)'A' + (row - 1)) + col.ToString();
}

2 commentaires

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.



2
votes

Celui-ci (non testé) doit également fonctionner avec des adresses de colonne supérieures à 26: xxx

corrigé: l'adresse de colonne était en arrière


1 commentaires

Cela reviendra BA1 pour Col 27 au lieu d'AA1.



-1
votes

cellules (2, 3) .Address


0 commentaires

11
votes

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]);
}


1 commentaires

Parfait ! Merci beaucoup ! Ceci elle-même a fonctionné parfait pour moi :) gamme.Address [FALSE, FALSE, XL.XLREFERENCELYLE.XLA1];



2
votes

Juste une amélioration, le col - était au mauvais endroit xxx


0 commentaires

-1
votes

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();
    }


0 commentaires