Comment convertir un numéro de colonne (par ex. 127) dans une colonne excel (p. ex. AA)

comment convertir un nombre numérique en un nom de colonne Excel dans C# sans utiliser l'automatisation obtenir la valeur directement à partir D'Excel.

Excel 2007 a une gamme possible de 1 à 16384, qui est le nombre de colonnes qu'il supporte. Les valeurs résultantes doivent être sous la forme de noms de colonne excel, par exemple A, AA, AAA etc.

406
demandé sur robertkroll 2008-10-08 10:55:01
la source

30 ответов

Voici comment je le fais:

private string GetExcelColumnName(int columnNumber)
{
    int dividend = columnNumber;
    string columnName = String.Empty;
    int modulo;

    while (dividend > 0)
    {
        modulo = (dividend - 1) % 26;
        columnName = Convert.ToChar(65 + modulo).ToString() + columnName;
        dividend = (int)((dividend - modulo) / 26);
    } 

    return columnName;
}
783
répondu Graham 2008-10-08 18:01:28
la source

si quelqu'un doit faire cela dans Excel sans VBA, voici un moyen:

=SUBSTITUTE(ADDRESS(1;colNum;4);"1";"")

où colNum est le numéro de colonne

et dans VBA:

Function GetColumnName(colNum As Integer) As String
    Dim d As Integer
    Dim m As Integer
    Dim name As String
    d = colNum
    name = ""
    Do While (d > 0)
        m = (d - 1) Mod 26
        name = Chr(65 + m) + name
        d = Int((d - m) / 26)
    Loop
    GetColumnName = name
End Function
53
répondu vzczc 2014-01-29 13:04:44
la source

Désolé, c'est Python au lieu de C#, mais au moins les résultats sont corrects:

def ColIdxToXlName(idx):
    if idx < 1:
        raise ValueError("Index is too small")
    result = ""
    while True:
        if idx > 26:
            idx, r = divmod(idx - 1, 26)
            result = chr(r + ord('A')) + result
        else:
            return chr(idx + ord('A') - 1) + result


for i in xrange(1, 1024):
    print "%4d : %s" % (i, ColIdxToXlName(i))
20
répondu RoMa 2008-10-08 14:09:18
la source

vous pourriez avoir besoin de conversion dans les deux sens, E. g de l'adresse de colonne Excel comme AAZ À entier et de n'importe quel entier à Excel. Les deux méthodes ci-dessous le feront. Supposons une indexation basée sur 1, le premier élément de vos "tableaux" est le numéro d'élément 1. Aucune limite de taille ici, donc vous pouvez utiliser des adresses comme erreur et ce serait la colonne numéro 2613824 ...

public static string ColumnAdress(int col)
{
  if (col <= 26) { 
    return Convert.ToChar(col + 64).ToString();
  }
  int div = col / 26;
  int mod = col % 26;
  if (mod == 0) {mod = 26;div--;}
  return ColumnAdress(div) + ColumnAdress(mod);
}

public static int ColumnNumber(string colAdress)
{
  int[] digits = new int[colAdress.Length];
  for (int i = 0; i < colAdress.Length; ++i)
  {
    digits[i] = Convert.ToInt32(colAdress[i]) - 64;
  }
  int mul=1;int res=0;
  for (int pos = digits.Length - 1; pos >= 0; --pos)
  {
    res += digits[pos] * mul;
    mul *= 26;
  }
  return res;
}
16
répondu Arent Arntzen 2014-02-11 13:41:01
la source

j'ai découvert une erreur dans mon premier message, donc j'ai décidé de m'asseoir et de faire le calcul. Ce que j'ai trouvé est que le système de nombre utilisé pour identifier les colonnes Excel n'est pas un système de base 26, comme une autre personne a affiché. Tenez compte de ce qui suit à la base 10. Vous pouvez aussi le faire avec les lettres de l'alphabet.

Espace:.........................S1, S2, S3: S1, S2, S3

....................................0, 00, 000:.. A, AA, AAA

....................................1, 01, 001 :.. B, AB, AAB

.................................... ..., ..., ... :.. ..., ..., ...

....................................9, 99, 999 :.. Z, ZZ, ZZZ

Total des États dans l'Espace: 10, 100, 1000 : 26, 676, 17576

Total Membres:...............1110................18278

Excel numéros de colonnes dans la personne alphabétique des espaces en utilisant la base 26. Vous pouvez voir qu'en général, l'espace d'état de progression de est un, a^2,^3, ... pour une base de a, et le nombre total d'états est un + a^2 + a^3 + ... .

supposons que vous vouliez trouver le nombre total d'États A dans les premiers n espaces. La formule pour le faire est A = (a)(a^N - 1 )/(un-1). C'est important parce que nous avons besoin de trouver L'espace N qui correspond à notre index K. Si je veux savoir où se trouve K dans le système de nombres, je dois remplacer A par K et pour résoudre N. La solution est N = log{base} (A (A-1)/un +1). Si j'utilise l'exemple de A = 10 et K = 192, Je sais que N =2.23804... Cela me dit que K se trouve au début du troisième espace puisqu'il est un peu plus grand que deux.

La prochaine étape est de trouver exactement comment loin dans l'espace actuel nous sommes. Pour trouver ceci, soustrayez de K Le A généré en utilisant le plancher de N. Dans cet exemple, le plancher de N est deux. Donc, Un = (10)(10^2 – 1)/(10-1) = 110, comme prévu lorsque vous combinez les membres des deux premières places. Cela doit être soustrait de K parce que ces 110 premiers États auraient déjà été pris en compte dans les deux premiers espaces. Il nous reste donc 82 États. Donc, dans ce système de nombres, la représentation de 192 en base 10 est 082.

le code C # utilisant un indice de base de Zéro est

    private string ExcelColumnIndexToName(int Index)
    {
        string range = string.Empty;
        if (Index < 0 ) return range;
        int a = 26;
        int x = (int)Math.Floor(Math.Log((Index) * (a - 1) / a + 1, a));
        Index -= (int)(Math.Pow(a, x) - 1) * a / (a - 1);
        for (int i = x+1; Index + i > 0; i--)
        {
            range = ((char)(65 + Index % a)).ToString() + range;
            Index /= a;
        }
        return range;
    }

/ / Old Post

de base zéro de la solution en C#.

    private string ExcelColumnIndexToName(int Index)
    {
        string range = "";
        if (Index < 0 ) return range;
        for(int i=1;Index + i > 0;i=0)
        {
            range = ((char)(65 + Index % 26)).ToString() + range;
            Index /= 26;
        }
        if (range.Length > 1) range = ((char)((int)range[0] - 1)).ToString() + range.Substring(1);
        return range;
    }
13
répondu John 2010-08-11 01:08:52
la source
int nCol = 127;
string sChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
string sCol = "";
while (nCol >= 26)
{
    int nChar = nCol % 26;
    nCol = (nCol - nChar) / 26;
    // You could do some trick with using nChar as offset from 'A', but I am lazy to do it right now.
    sCol = sChars[nChar] + sCol;
}
sCol = sChars[nCol] + sCol;

mise à Jour : Peter , ce commentaire est juste. C'est ce que j'obtiens en écrivant du code dans le navigateur. :- ) Ma solution n'était pas de compiler, il manquait la lettre la plus à gauche et il construisait la chaîne dans l'ordre inverse-tout maintenant corrigé.

mis à part les bogues, l'algorithme convertit essentiellement un nombre de la base 10 à la base 26.

Update 2 : Joel Coehoorn est à droite - le code ci-dessus retournera AB pour 27. Si C'était le nombre réel de base 26, AA serait égal à A et le nombre suivant après Z serait BA.

int nCol = 127;
string sChars = "0ABCDEFGHIJKLMNOPQRSTUVWXYZ";
string sCol = "";
while (nCol > 26)
{
    int nChar = nCol % 26;
    if (nChar == 0)
        nChar = 26;
    nCol = (nCol - nChar) / 26;
    sCol = sChars[nChar] + sCol;
}
if (nCol != 0)
    sCol = sChars[nCol] + sCol;
9
répondu Franci Penov 2017-05-23 15:26:32
la source

facile avec récursion.

public static string GetStandardExcelColumnName(int columnNumberOneBased)
{
  int baseValue = Convert.ToInt32('A');
  int columnNumberZeroBased = columnNumberOneBased - 1;

  string ret = "";

  if (columnNumberOneBased > 26)
  {
    ret = GetStandardExcelColumnName(columnNumberZeroBased / 26) ;
  }

  return ret + Convert.ToChar(baseValue + (columnNumberZeroBased % 26) );
}
9
répondu Peter 2010-03-27 16:21:50
la source

cette réponse est en javaScript:

function getCharFromNumber(columnNumber){
    var dividend = columnNumber;
    var columnName = "";
    var modulo;

    while (dividend > 0)
    {
        modulo = (dividend - 1) % 26;
        columnName = String.fromCharCode(65 + modulo).toString() + columnName;
        dividend = parseInt((dividend - modulo) / 26);
    } 
    return  columnName;
}
8
répondu MaVRoSCy 2013-03-28 14:12:05
la source

je suis surpris que toutes les solutions contiennent jusqu'à présent soit itération ou récursion.

voici ma solution qui fonctionne en temps constant (pas de boucles). Cette solution fonctionne pour toutes les colonnes Excel possibles et vérifie que l'entrée peut être transformée en une colonne Excel. Les colonnes possibles se situent dans la gamme [A, XFD] ou [1, 16384]. (Cela dépend de votre version D'Excel)

private static string Turn(uint col)
{
    if (col < 1 || col > 16384) //Excel columns are one-based (one = 'A')
        throw new ArgumentException("col must be >= 1 and <= 16384");

    if (col <= 26) //one character
        return ((char)(col + 'A' - 1)).ToString();

    else if (col <= 702) //two characters
    {
        char firstChar = (char)((int)((col - 1) / 26) + 'A' - 1);
        char secondChar = (char)(col % 26 + 'A' - 1);

        if (secondChar == '@') //Excel is one-based, but modulo operations are zero-based
            secondChar = 'Z'; //convert one-based to zero-based

        return string.Format("{0}{1}", firstChar, secondChar);
    }

    else //three characters
    {
        char firstChar = (char)((int)((col - 1) / 702) + 'A' - 1);
        char secondChar = (char)((col - 1) / 26 % 26 + 'A' - 1);
        char thirdChar = (char)(col % 26 + 'A' - 1);

        if (thirdChar == '@') //Excel is one-based, but modulo operations are zero-based
            thirdChar = 'Z'; //convert one-based to zero-based

        return string.Format("{0}{1}{2}", firstChar, secondChar, thirdChar);
    }
}
7
répondu user2023861 2013-02-08 23:36:11
la source

..Et converti en php:

function GetExcelColumnName($columnNumber) {
    $columnName = '';
    while ($columnNumber > 0) {
        $modulo = ($columnNumber - 1) % 26;
        $columnName = chr(65 + $modulo) . $columnName;
        $columnNumber = (int)(($columnNumber - $modulo) / 26);
    }
    return $columnName;
}
6
répondu Stephen Fuhry 2009-12-18 01:17:33
la source

même implémentation en Java

public String getExcelColumnName (int columnNumber) 
    {     
        int dividend = columnNumber;   
        int i;
        String columnName = "";     
        int modulo;     
        while (dividend > 0)     
        {        
            modulo = (dividend - 1) % 26;         
            i = 65 + modulo;
            columnName = new Character((char)i).toString() + columnName;        
            dividend = (int)((dividend - modulo) / 26);    
        }       
        return columnName; 
    }  
6
répondu Balaji.N.S 2011-03-17 04:28:12
la source

après avoir examiné toutes les Versions fournies ici, j'ai décidé d'en faire une moi-même, en utilisant la récursion.

Voici mon vb.net Version:

Function CL(ByVal x As Integer) As String
    If x >= 1 And x <= 26 Then
        CL = Chr(x + 64)
    Else
        CL = CL((x - x Mod 26) / 26) & Chr((x Mod 26) + 1 + 64)
    End If
End Function
5
répondu user932708 2011-10-13 12:09:30
la source

un peu tard pour le jeu, mais voici le code que j'utilise (en C#):

private static readonly string _Alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
public static int ColumnNameParse(string value)
{
    // assumes value.Length is [1,3]
    // assumes value is uppercase
    var digits = value.PadLeft(3).Select(x => _Alphabet.IndexOf(x));
    return digits.Aggregate(0, (current, index) => (current * 26) + (index + 1));
}
5
répondu Kelly L 2012-01-05 11:38:50
la source

juste jeter dans un simple Deux-Ligne C# implémentation en utilisant la récursion, parce que toutes les réponses ici semblent beaucoup plus compliqué que nécessaire.

/// <summary>
/// Gets the column letter(s) corresponding to the given column number.
/// </summary>
/// <param name="column">The one-based column index. Must be greater than zero.</param>
/// <returns>The desired column letter, or an empty string if the column number was invalid.</returns>
public static string GetColumnLetter(int column) {
    if (column < 1) return String.Empty;
    return GetColumnLetter((column - 1) / 26) + (char)('A' + (column - 1) % 26);
}
5
répondu Extragorey 2017-12-29 02:55:45
la source

si vous voulez juste pour une formule de cellule sans code, voici une formule:

IF(COLUMN()>=26,CHAR(ROUND(COLUMN()/26,1)+64)&CHAR(MOD(COLUMN(),26)+64),CHAR(COLUMN()+64))
4
répondu Matt Lewis 2011-03-17 04:27:28
la source

In Delphi (Pascal):

function GetExcelColumnName(columnNumber: integer): string;
var
  dividend, modulo: integer;
begin
  Result := '';
  dividend := columnNumber;
  while dividend > 0 do begin
    modulo := (dividend - 1) mod 26;
    Result := Chr(65 + modulo) + Result;
    dividend := (dividend - modulo) div 26;
  end;
end;
4
répondu JRL 2011-08-24 20:01:38
la source

j'ai voulu jeter dans ma classe statique que j'utilise, pour interoper entre l'index de col et étiquette de col. J'utilise une réponse acceptée modifiée pour ma méthode ColumnLabel

public static class Extensions
{
    public static string ColumnLabel(this int col)
    {
        var dividend = col;
        var columnLabel = string.Empty;
        int modulo;

        while (dividend > 0)
        {
            modulo = (dividend - 1) % 26;
            columnLabel = Convert.ToChar(65 + modulo).ToString() + columnLabel;
            dividend = (int)((dividend - modulo) / 26);
        } 

        return columnLabel;
    }
    public static int ColumnIndex(this string colLabel)
    {
        // "AD" (1 * 26^1) + (4 * 26^0) ...
        var colIndex = 0;
        for(int ind = 0, pow = colLabel.Count()-1; ind < colLabel.Count(); ++ind, --pow)
        {
            var cVal = Convert.ToInt32(colLabel[ind]) - 64; //col A is index 1
            colIndex += cVal * ((int)Math.Pow(26, pow));
        }
        return colIndex;
    }
}

utilisez ceci comme...

30.ColumnLabel(); // "AD"
"AD".ColumnIndex(); // 30
4
répondu t3dodson 2014-09-26 19:33:16
la source
private String getColumn(int c) {
    String s = "";
    do {
        s = (char)('A' + (c % 26)) + s;
        c /= 26;
    } while (c-- > 0);
    return s;
}

ce n'est pas exactement la base 26, Il n'y a pas de 0 dans le système. Si C'était le cas, " Z "serait suivi de" BA "et non de "AA".

3
répondu rubberduckie 2008-11-04 02:00:16
la source

affinage de la solution originale (en C#):

public static class ExcelHelper
{
    private static Dictionary<UInt16, String> l_DictionaryOfColumns;

    public static ExcelHelper() {
        l_DictionaryOfColumns = new Dictionary<ushort, string>(256);
    }

    public static String GetExcelColumnName(UInt16 l_Column)
    {
        UInt16 l_ColumnCopy = l_Column;
        String l_Chars = "0ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        String l_rVal = "";
        UInt16 l_Char;


        if (l_DictionaryOfColumns.ContainsKey(l_Column) == true)
        {
            l_rVal = l_DictionaryOfColumns[l_Column];
        }
        else
        {
            while (l_ColumnCopy > 26)
            {
                l_Char = l_ColumnCopy % 26;
                if (l_Char == 0)
                    l_Char = 26;

                l_ColumnCopy = (l_ColumnCopy - l_Char) / 26;
                l_rVal = l_Chars[l_Char] + l_rVal;
            }
            if (l_ColumnCopy != 0)
                l_rVal = l_Chars[l_ColumnCopy] + l_rVal;

            l_DictionaryOfColumns.ContainsKey(l_Column) = l_rVal;
        }

        return l_rVal;
    }
}
2
répondu ShloEmi 2009-07-27 19:20:16
la source

Voici une version Actionscript:

private var columnNumbers:Array = ['A', 'B', 'C', 'D', 'E', 'F' , 'G', 'H', 'I', 'J', 'K' ,'L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];

    private function getExcelColumnName(columnNumber:int) : String{
        var dividend:int = columnNumber;
        var columnName:String = "";
        var modulo:int;

        while (dividend > 0)
        {
            modulo = (dividend - 1) % 26;
            columnName = columnNumbers[modulo] + columnName;
            dividend = int((dividend - modulo) / 26);
        } 

        return columnName;
    }
2
répondu Rob 2010-03-29 18:37:30
la source

Solution JavaScript

/**
 * Calculate the column letter abbreviation from a 1 based index
 * @param {Number} value
 * @returns {string}
 */
getColumnFromIndex = function (value) {
    var base = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
    var remainder, result = "";
    do {
        remainder = value % 26;
        result = base[(remainder || 26) - 1] + result;
        value = Math.floor(value / 26);
    } while (value > 0);
    return result;
};
2
répondu Ally 2013-10-03 13:49:38
la source

En perl, pour une entrée de 1 (UN), 27 (AA), etc.

sub excel_colname {
  my ($idx) = @_;       # one-based column number
  --$idx;               # zero-based column index
  my $name = "";
  while ($idx >= 0) {
    $name .= chr(ord("A") + ($idx % 26));
    $idx   = int($idx / 26) - 1;
  }
  return scalar reverse $name;
}
2
répondu Myforwik 2015-05-19 22:04:46
la source

Voici mon implémentation super late en PHP. Ceci est récursive. Je l'ai écrit juste avant de trouver ce post. Je voulais voir si d'autres avaient résolu ce problème déjà...

public function GetColumn($intNumber, $strCol = null) {

    if ($intNumber > 0) {
        $intRem = ($intNumber - 1) % 26;
        $strCol = $this->GetColumn(intval(($intNumber - $intRem) / 26), sprintf('%s%s', chr(65 + $intRem), $strCol));
    }

    return $strCol;
}
1
répondu Gordon Freeman 2013-05-02 02:44:13
la source

j'essaie de faire la même chose à Java... J'ai écrit le code suivant:

private String getExcelColumnName(int columnNumber) {

    int dividend = columnNumber;
    String columnName = "";
    int modulo;

    while (dividend > 0)
    {
        modulo = (dividend - 1) % 26;

        char val = Character.valueOf((char)(65 + modulo));

        columnName += val;

        dividend = (int)((dividend - modulo) / 26);
    } 

    return columnName;
}

maintenant une fois que je l'ai lancé avec columnNumber = 29, Il me donne le résultat = "CA" (au lieu de " AC") tous les commentaires ce que je suis absent? Je sais que je peux l'Inverser par StringBuilder.... Mais en regardant la réponse de Graham, je suis un peu confus....

1
répondu Hasan 2014-02-11 13:41:36
la source

un Autre VBA façon

Public Function GetColumnName(TargetCell As Range) As String
    GetColumnName = Split(CStr(TargetCell.Address), "$")(1)
End Function
1
répondu Paul Ma 2014-02-21 06:29:21
la source

ces codes my pour convertir un nombre spécifique (index démarrer à partir de 1) en colonne Excel.

    public static string NumberToExcelColumn(uint number)
    {
        uint originalNumber = number;

        uint numChars = 1;
        while (Math.Pow(26, numChars) < number)
        {
            numChars++;

            if (Math.Pow(26, numChars) + 26 >= number)
            {
                break;
            }               
        }

        string toRet = "";
        uint lastValue = 0;

        do
        {
            number -= lastValue;

            double powerVal = Math.Pow(26, numChars - 1);
            byte thisCharIdx = (byte)Math.Truncate((columnNumber - 1) / powerVal);
            lastValue = (int)powerVal * thisCharIdx;

            if (numChars - 2 >= 0)
            {
                double powerVal_next = Math.Pow(26, numChars - 2);
                byte thisCharIdx_next = (byte)Math.Truncate((columnNumber - lastValue - 1) / powerVal_next);
                int lastValue_next = (int)Math.Pow(26, numChars - 2) * thisCharIdx_next;

                if (thisCharIdx_next == 0 && lastValue_next == 0 && powerVal_next == 26)
                {
                    thisCharIdx--;
                    lastValue = (int)powerVal * thisCharIdx;
                }
            }

            toRet += (char)((byte)'A' + thisCharIdx + ((numChars > 1) ? -1 : 0));

            numChars--;
        } while (numChars > 0);

        return toRet;
    }

Mon Test De L'Unité:

    [TestMethod]
    public void Test()
    {
        Assert.AreEqual("A", NumberToExcelColumn(1));
        Assert.AreEqual("Z", NumberToExcelColumn(26));
        Assert.AreEqual("AA", NumberToExcelColumn(27));
        Assert.AreEqual("AO", NumberToExcelColumn(41));
        Assert.AreEqual("AZ", NumberToExcelColumn(52));
        Assert.AreEqual("BA", NumberToExcelColumn(53));
        Assert.AreEqual("ZZ", NumberToExcelColumn(702));
        Assert.AreEqual("AAA", NumberToExcelColumn(703));
        Assert.AreEqual("ABC", NumberToExcelColumn(731));
        Assert.AreEqual("ACQ", NumberToExcelColumn(771));
        Assert.AreEqual("AYZ", NumberToExcelColumn(1352));
        Assert.AreEqual("AZA", NumberToExcelColumn(1353));
        Assert.AreEqual("AZB", NumberToExcelColumn(1354));
        Assert.AreEqual("BAA", NumberToExcelColumn(1379));
        Assert.AreEqual("CNU", NumberToExcelColumn(2413));
        Assert.AreEqual("GCM", NumberToExcelColumn(4823));
        Assert.AreEqual("MSR", NumberToExcelColumn(9300));
        Assert.AreEqual("OMB", NumberToExcelColumn(10480));
        Assert.AreEqual("ULV", NumberToExcelColumn(14530));
        Assert.AreEqual("XFD", NumberToExcelColumn(16384));
    }
1
répondu Stevanus 2015-04-10 20:02:11
la source

Désolé, c'est Python au lieu de C#, mais au moins les résultats sont corrects:

def excel_column_number_to_name(column_number):
    output = ""
    index = column_number-1
    while index >= 0:
        character = chr((index%26)+ord('A'))
        output = output + character
        index = index/26 - 1

    return output[::-1]


for i in xrange(1, 1024):
    print "%4d : %s" % (i, excel_column_number_to_name(i))

a réussi ces essais:

  • numéro de colonne: 494286 = > ABCDZ
  • numéro de colonne: 27 = > AA
  • numéro de colonne: 52 => AZ
1
répondu DataEngineer 2017-11-05 21:04:45
la source

j'utilise celui-ci en VB.NET 2003 et cela fonctionne bien...

Private Function GetExcelColumnName(ByVal aiColNumber As Integer) As String
    Dim BaseValue As Integer = Convert.ToInt32(("A").Chars(0)) - 1
    Dim lsReturn As String = String.Empty

    If (aiColNumber > 26) Then
        lsReturn = GetExcelColumnName(Convert.ToInt32((Format(aiColNumber / 26, "0.0").Split("."))(0)))
    End If

    GetExcelColumnName = lsReturn + Convert.ToChar(BaseValue + (aiColNumber Mod 26))
End Function
0
répondu Manuel 2008-11-04 20:26:02
la source

une autre solution:

private void Foo()
{
   l_ExcelApp = new Excel.ApplicationClass();
   l_ExcelApp.ReferenceStyle = Excel.XlReferenceStyle.xlR1C1;
   // ... now reference by R[row]C[column], Ex. A1 <==> R1C1, C6 <==> R3C6, ...
}

en savoir plus - les références aux Cellules dans Excel pour tout le monde! par Dr Nitin Paranjape

0
répondu ShloEmi 2009-07-27 19:35:08
la source
public static string ConvertToAlphaColumnReferenceFromInteger(int columnReference)
    {
        int baseValue = ((int)('A')) - 1 ;
        string lsReturn = String.Empty; 

        if (columnReference > 26) 
        {
            lsReturn = ConvertToAlphaColumnReferenceFromInteger(Convert.ToInt32(Convert.ToDouble(columnReference / 26).ToString().Split('.')[0]));
        } 

        return lsReturn + Convert.ToChar(baseValue + (columnReference % 26));            
    }
0
répondu Daniel 2010-03-18 21:17:49
la source

Autres questions sur