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


转载于:https://www.cnblogs.com/xhan/archive/2009/12/29/1635294.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值