2009-12-28 18 views
1

excel ligne 2003, des adresses de colonne sont spécifiés comme A, 1 et C, 12 mais dans Excel 2007 ce format modifié pour des nombres entiers comme 1,1 et 3,12Excel 2003 et excellent rangée 2007, l'adresse colonne différence

est-il un support intégré pour la conversion de l'ancienne adresse en un nouveau ou existe-t-il un algorithme personnalisé pour convertir ces valeurs.

merci à l'avance

Répondre

2

Voici ce que nous utilisons pour convertir Excel colonne lettres vers des numéros et le dos

/// <summary> 
/// 1 -> A<br/> 
/// 2 -> B<br/> 
/// 3 -> C<br/> 
/// ... 
/// </summary> 
/// <param name="column"></param> 
/// <returns></returns> 
public static string ExcelColumnFromNumber(int column) 
{ 
    string columnString = ""; 
    decimal columnNumber = column; 
    while (columnNumber > 0) 
    { 
     decimal currentLetterNumber = (columnNumber - 1) % 26; 
     char currentLetter = (char)(currentLetterNumber + 65); 
     columnString = currentLetter + columnString; 
     columnNumber = (columnNumber - (currentLetterNumber + 1))/26; 
    } 
    return columnString; 
} 

/// <summary> 
/// A -> 1<br/> 
/// B -> 2<br/> 
/// C -> 3<br/> 
/// ... 
/// </summary> 
/// <param name="column"></param> 
/// <returns></returns> 
public static int NumberFromExcelColumn(string column) 
{ 
    int retVal = 0; 
    string col = column.ToUpper(); 
    for (int iChar = col.Length - 1; iChar >= 0; iChar--) 
    { 
     char colPiece = col[iChar]; 
     int colNum = colPiece - 64; 
     retVal = retVal + colNum * (int)Math.Pow(26, col.Length - (iChar + 1)); 
    } 
    return retVal; 
}