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)