[Test]
public void Test10To26()
{
Assert.AreEqual("A", GetColumnName(1));
Assert.AreEqual("B", GetColumnName(2));
Assert.AreEqual("Z", GetColumnName(26));
Assert.AreEqual("ZZ", GetColumnName(26*26 + 26));
Assert.AreEqual("ZZZ", GetColumnName(26 * 26 * 26 + 26 * 26 + 26));
Assert.AreEqual("AA", GetColumnName(27));
Assert.AreEqual("AB", GetColumnName(28));
Assert.AreEqual("AC", GetColumnName(29));
int aaa = 1 * 26 * 26 + 1 * 26 + 1; //AAA;
Assert.AreEqual("AAA", GetColumnName(aaa));
int aab = 1 * 26 * 26 + 1 * 26 + 2;
Assert.AreEqual("AAB", GetColumnName(aab));
int bbb = 2 * 26 * 26 + 2 * 26 + 2; //AAA;
Assert.AreEqual("BBB", GetColumnName(bbb));
}
public string GetColumnName(int intValue)
{
string result = "";
if (intValue <= 26)
{
result = (char)(intValue + 96) + result;
return result.ToUpper();
}
int modOf26 = intValue % 26;
int left = 0;
if (modOf26 == 0)
{
result = 'Z' + result;
left = intValue - 26;
}
else
{
result = (char)(modOf26 + 96) + result;
left = intValue - modOf26;
}
int nextInputValue = left / 26;
if (nextInputValue == 0)
return result.ToUpper();
if (nextInputValue > 26)
result = GetColumnName(nextInputValue) + result;
else
result = (char)(nextInputValue + 96) + result;
return result.ToUpper();
}
public void Test10To26()
{
Assert.AreEqual("A", GetColumnName(1));
Assert.AreEqual("B", GetColumnName(2));
Assert.AreEqual("Z", GetColumnName(26));
Assert.AreEqual("ZZ", GetColumnName(26*26 + 26));
Assert.AreEqual("ZZZ", GetColumnName(26 * 26 * 26 + 26 * 26 + 26));
Assert.AreEqual("AA", GetColumnName(27));
Assert.AreEqual("AB", GetColumnName(28));
Assert.AreEqual("AC", GetColumnName(29));
int aaa = 1 * 26 * 26 + 1 * 26 + 1; //AAA;
Assert.AreEqual("AAA", GetColumnName(aaa));
int aab = 1 * 26 * 26 + 1 * 26 + 2;
Assert.AreEqual("AAB", GetColumnName(aab));
int bbb = 2 * 26 * 26 + 2 * 26 + 2; //AAA;
Assert.AreEqual("BBB", GetColumnName(bbb));
}
public string GetColumnName(int intValue)
{
string result = "";
if (intValue <= 26)
{
result = (char)(intValue + 96) + result;
return result.ToUpper();
}
int modOf26 = intValue % 26;
int left = 0;
if (modOf26 == 0)
{
result = 'Z' + result;
left = intValue - 26;
}
else
{
result = (char)(modOf26 + 96) + result;
left = intValue - modOf26;
}
int nextInputValue = left / 26;
if (nextInputValue == 0)
return result.ToUpper();
if (nextInputValue > 26)
result = GetColumnName(nextInputValue) + result;
else
result = (char)(nextInputValue + 96) + result;
return result.ToUpper();
}