@SlyEcho said:
The best way to write it would be:
public class ExcelCell
{
private int columnNumber;
private const string ABC = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
public string ColumnName
{
get
{
StringBuilder sb = new StringBuilder();
MakeName(sb, columnNumber - 1);
return sb.ToString();
}
}
private static void MakeName(StringBuilder name, int number)
{
int d = number / ABC.Length;
int m = number % ABC.Length;
if (d > 0)
MakeName(name, d);
name.Append(ABC[m]);
}
}
27 should turn into AA, but your code turns it into BA.
This ought to work:
public class ExcelCell
{
private int columnNumber;
private const string ABC = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
public string ColumnName
{
get
{
StringBuilder sb = new StringBuilder();
MakeName(sb, columnNumber);
return sb.ToString();
}
}
private static void MakeName(StringBuilder name, int number)
{
if (--number >= 0) {
int d = number / ABC.Length;
int m = number % ABC.Length;
MakeName(name, d);
name.Append(ABC[m]);
}
}
}