首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将列号(例如127)转换为Excel列(例如AA)

如何将列号(例如127)转换为Excel列(例如AA)
EN

Stack Overflow用户
提问于 2008-10-08 06:55:02
回答 56查看 267.6K关注 0票数 525

如何在C#中将数值转换为Excel列名,而不使用自动从Excel直接获取值。

Excel2007的可能范围是1到16384,这是它支持的列数。结果值应采用excel列名的形式,例如A、AA、AAA等。

EN

回答 56

Stack Overflow用户

回答已采纳

发布于 2008-10-08 14:01:28

我是这样做的:

代码语言:javascript
运行
复制
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;
}
票数 999
EN

Stack Overflow用户

发布于 2009-01-30 14:25:34

如果任何人需要在没有VBA的情况下在Excel中执行此操作,这里有一种方法:

代码语言:javascript
运行
复制
=SUBSTITUTE(ADDRESS(1;colNum;4);"1";"")

其中colNum是列号

在VBA中:

代码语言:javascript
运行
复制
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
票数 64
EN

Stack Overflow用户

发布于 2008-10-08 10:09:18

对不起,这是Python而不是C#,但至少结果是正确的:

代码语言:javascript
运行
复制
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))
票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/181596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档