您的位置:首页 > 其它

excel 列索引(数字)转列名

2017-08-30 14:38 761 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: