2009-12-28 38 views
1

在excel 2003行中,列地址指定为A,1和C,12 ,但在Excel 2007中,此格式更改为整数如1,1和3,12excel 2003和excel 2007行,列地址差异

是否有内置的支持将旧地址转换为新地址或是否有任何自定义算法来转换这些值。

在此先感谢

回答

2

下面是我们用它来转换Excel列字母与数字和背部

/// <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; 
} 
相关问题