diff --git a/ClosedXML/ClosedXML/ClosedXML/Utils/GraphicsUtils.cs b/ClosedXML/ClosedXML/ClosedXML/Utils/GraphicsUtils.cs
index 954c22c..b5e6762 100644
--- a/ClosedXML/ClosedXML/ClosedXML/Utils/GraphicsUtils.cs
+++ b/ClosedXML/ClosedXML/ClosedXML/Utils/GraphicsUtils.cs
@@ -5,17 +5,24 @@
{
internal static class GraphicsUtils
{
+ [ThreadStatic]
+ private static Graphics threadLocalGraphics;
+ private static Graphics g
+ {
+ get
+ {
+ if (threadLocalGraphics == null)
+ {
+ var image = new Bitmap(1, 1);
+ threadLocalGraphics = Graphics.FromImage(image);
+ }
+ return threadLocalGraphics;
+ }
+ }
+
public static SizeF MeasureString(string s, Font font)
{
- SizeF result;
- using (var image = new Bitmap(1, 1))
- {
- using (var g = Graphics.FromImage(image))
- {
- result = g.MeasureString(s, font, Int32.MaxValue, StringFormat.GenericTypographic);
- }
- }
-
+ SizeF result = g.MeasureString(s, font, Int32.MaxValue, StringFormat.GenericTypographic);
return result;
}
}
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)