Fastest function to generate Excel column letters in C#

前端 未结 21 1757
无人共我
无人共我 2020-11-29 02:30

What is the fastest c# function that takes and int and returns a string containing a letter or letters for use in an Excel function? For example, 1 returns \"A\", 26 return

21条回答
  •  爱一瞬间的悲伤
    2020-11-29 03:09

    I currently use this, with Excel 2007

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

    and

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

    As mentioned in other posts, the results can be cached.

提交回复
热议问题