zoukankan      html  css  js  c++  java
  • 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();
             
            }


  • 相关阅读:
    apache的httpclient进行http的交互处理
    Java 基础篇之反射
    死磕 java线程系列之创建线程的8种方式
    Spring Boot(三) 使用Lombok
    Spring Boot (七): Mybatis极简配置
    Spring Boot Thymeleaf 实现国际化
    微项目:一步一步带你使用SpringBoot入门(二)
    SSM框架手动实现分页逻辑(非PageHelper)
    Java 基础篇之集合
    一起来学Java注解(Annotation)
  • 原文地址:https://www.cnblogs.com/xhan/p/1635294.html
Copyright © 2011-2022 走看看