excel 列索引(数字)转列名

 1 function index2ColName($columnNumber)
 2 {
 3     $dividend = $columnNumber;
 4     $columnName = ''; 6 
 7     while ($dividend > 0)
 8     {
 9         $modulo = ($dividend - 1) % 26;
10         $columnName = chr(65 + $modulo) . $columnName;
11         $dividend = intval(($dividend - $modulo) / 26);
12     } 
13 
14     return $columnName;
15 }

百度来的算法全都不对,跟我一开始想的一样——把这个问题考虑成了10到26进制的转换,但事实并非如此。

想想以下情况,26进制用A代表数0,B代表数1……Z代表25。

那么表示26则需要进一位,即BA, 而excel里面Z列的下一列是AA。

我们的二十六进制体系里, AA = 00 = 0 = A。 So, 这个想法是错误的。

最后还是谷歌大法好,5分钟解决问题。

参考链接:

https://stackoverflow.com/questions/181596/how-to-convert-a-column-number-eg-127-into-an-excel-column-eg-aa

转载于:https://www.cnblogs.com/haries/p/7453036.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值