将数字转换为C#中的字母,以便在Microsoft Excel中使用

JMK*_*JMK 6 c# algorithm excel

可能重复:
如何将列号(例如127)转换为excel列(例如AA)

好的,我正在编写一个接受二维数组作为参数的方法.我想将这个2d数组放到Excel工作表上,但我需要计算出最终的单元格位置.我可以像这样轻松地获得高度:

var height = data.GetLength(1); //`data` is the name of my 2d array
Run Code Online (Sandbox Code Playgroud)

这给了我我的Y轴,但是获得我的X轴并不容易.显然我可以得到这样的数字:

var width = data.GetLength(0);
Run Code Online (Sandbox Code Playgroud)

这给了我一个数字,我想转换成一个字母.所以,例如,0是A,1是B,依此类推,直到我们到达26,再次回到A. 我确信有一种简单的方法可以做到这一点,但我有一个完整的心理障碍.

你会怎么做?

谢谢

Cri*_*scu 31

这是一个也处理两个字母列的版本(在Z列之后):

static string GetColumnName(int index)
{
    const string letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    var value = "";

    if (index >= letters.Length)
        value += letters[index / letters.Length - 1];

    value += letters[index % letters.Length];

    return value;
}
Run Code Online (Sandbox Code Playgroud)

  • @EdwardKarak如果您将AZ范围视为一组数字,则可以将以10为底的整数* n *转换为以AZ表示的数字(最多两位),其中:第一位是的结果。 * n *除以位数(26),第二位数将是该除法的余数。 (2认同)
  • 它有效,但有一个错误,当你发送大于701,它会抛出IndexOutOfRangeException错误. (2认同)