• 10进制转26进制作为Excel列名


           [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();
             
            }


  • 相关阅读:
    HandlerThread
    handler原理
    死锁简析
    Android序列化
    AsyncTask原理
    【java线程池】
    java创建线程的三种方式
    service相关
    【hashMap】详谈
    【activity任务栈】浅析
  • 原文地址:https://www.cnblogs.com/xhan/p/1635294.html
Copyright © 2020-2023  润新知