从列索引中获取Excel列字母的清洁算法

16 浏览
0 Comments

从列索引中获取Excel列字母的清洁算法

如何在不使用自动化获取Excel值的情况下,在C#中将数字转换为Excel列名。

Excel 2007的可能范围为1到16384,这是其支持的列数。结果值应以Excel列名称的形式呈现,例如A,AA,AAA等。

admin 更改状态以发布 2023年5月24日
0
0 Comments

如果有人需要在Excel中不使用VBA来完成这项任务,以下是一种方法:

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

其中colNum是列数

而在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

0
0 Comments

这是我如何做到的:

private string GetExcelColumnName(int columnNumber)
{
    string columnName = "";
    while (columnNumber > 0)
    {
        int modulo = (columnNumber - 1) % 26;
        columnName = Convert.ToChar('A' + modulo) + columnName;
        columnNumber = (columnNumber - modulo) / 26;
    } 
    return columnName;
}

0