diff --git a/ClosedXML/ClosedXML/ClosedXML/XLHelper.cs b/ClosedXML/ClosedXML/ClosedXML/XLHelper.cs index e0f257d..d5f704d 100644 --- a/ClosedXML/ClosedXML/ClosedXML/XLHelper.cs +++ b/ClosedXML/ClosedXML/ClosedXML/XLHelper.cs @@ -83,20 +83,22 @@ return sum; } + private static readonly string[] letters = new[] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" }; + /// /// Gets the column letter of a given column number. /// /// The column number to translate into a column letter. public static string GetColumnLetterFromNumber(int columnNumber) { - var ret = String.Empty; - while (columnNumber > 0) + columnNumber--; // Adjust for start on column 1 + if (columnNumber <= 25) { - --columnNumber; - ret = (char)('A' + columnNumber % 26) + ret; - columnNumber /= 26; + return letters[columnNumber]; } - return ret; + var firstPart = (columnNumber) / 26; + var remainder = ((columnNumber) % 26) + 1; + return GetColumnLetterFromNumber(firstPart) + GetColumnLetterFromNumber(remainder); } public static bool IsValidColumn(string column)