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

13 浏览
0 Comments

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

这个问题已经有答案了:

可能重复:

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

好的,我正在编写一个接受2D数组作为参数的方法。我想将这个2D数组放到Excel工作表上,但我需要计算出最终的单元格位置。我可以轻松地获取高度,如下所示:

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

这给了我Y轴,但是获取我的X轴并不那么容易。显然,我可以这样获取数字:

var width = data.GetLength(0);

这给了我一个数字,我想将其转换为字母。例如,0是A,1是B,依此类推,直到我们回到A的26。我相信有一种简单的方法可以做到这一点,但我完全被卡住了。

你会怎么做的?

谢谢

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

只需将其转换为 char,然后执行 "ToString()"。

using System;
using System.Collections.Generic;
public class MyClass
{
    public static void RunSnippet()
    {
        int myNumber = 65;
        string myLetter = ((char) myNumber).ToString();
        WL(myLetter);
    }
    #region Helper methods
    public static void Main()
    {
        try
        {
            RunSnippet();
        }
        catch (Exception e)
        {
            string error = string.Format("---\nThe following error occurred while executing the snippet:\n{0}\n---", e.ToString());
            Console.WriteLine(error);
        }
        finally
        {
            Console.Write("Press any key to continue...");
            Console.ReadKey();
        }
    }
    private static void WL(object text, params object[] args)
    {
        Console.WriteLine(text.ToString(), args);   
    }
    private static void RL()
    {
        Console.ReadLine(); 
    }
    private static void Break() 
    {
        System.Diagnostics.Debugger.Break();
    }
    #endregion
}

0
0 Comments

这里是一个版本,也可以处理两个字母的列(在Z列后):\n\n

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;
}

0