realpg
0.01D
V2EX  ›  PHP

PHP 如何简单的生成 EXCEL 的列号?

  •  1
     
  •   realpg ·
    PRO
    · Jul 27, 2015 · 2991 views
    This topic created in 3982 days ago, the information mentioned may be changed or developed.
    EXCEL的列号,1~26列列号是A B C D E F …… X Y Z 然后26以后就变成了AA AB AC AD AE AF AG AH …… AX AY AZ BA BB …… ZZ AAA AAB AAC ……

    求一个函数能快速给定数字的列号返回EXCEL标准列号
    我自己写的感觉都好2B的感觉……哪位大神有简单点的算法求灵感
    15 replies    2015-07-28 08:26:03 +08:00
    oott123
        1
    oott123  
       Jul 27, 2015 via Android
    不就是一种变相的 26 进制么是
    oott123
        2
    oott123  
       Jul 27, 2015 via Android
    (多打了个“是”字)
    b821025551b
        3
    b821025551b  
       Jul 27, 2015
    十进制转二十六进制
    realpg
        4
    realpg  
    OP
    PRO
       Jul 27, 2015
    @oott123
    @b821025551b
    一语惊醒梦中人……妹的连着一个礼拜睡觉5小时写代码18小时,整个人都不好了……
    人家都是萌萌哒,我现在是蒙蒙哒……

    结贴
    realpg
        5
    realpg  
    OP
    PRO
       Jul 27, 2015
    @oott123
    @b821025551b
    你们俩骗人……看来我之前还是没太蒙
    这个没有0,用传统的自定义进制转换的轮子转换的不对 重新求……
    imyip
        6
    imyip  
       Jul 27, 2015 via Android
    减一
    oott123
        7
    oott123  
       Jul 27, 2015
    @realpg 26 进制,没错啊
    0=A
    1=B
    ...
    25=Z
    lujiajing1126
        8
    lujiajing1126  
       Jul 27, 2015 via Android
    二十六进制
    b821025551b
        9
    b821025551b  
       Jul 27, 2015
    0→A
    1→B
    2→C
    3→D
    4→E
    .
    .
    .
    25→Z
    26→AA
    -------------------------------------
    1→A
    2→B
    3→C
    4→D
    5→E
    .
    .
    .
    26→Z
    27→AA
    两种区别就是从0开始还是从1开始,对应每位(26进制)转换做加减1操作。
    feiyuanqiu
        10
    feiyuanqiu  
       Jul 27, 2015   ❤️ 2
    $i = 'Z';
    $i++;
    var_dump($i);exit;
    realpg
        11
    realpg  
    OP
    PRO
       Jul 27, 2015
    @oott123 基本进制转换肯定是不对,常用字母替代位元的进制,仍然有0和十的概念,这样才能用除以进制基数的办法进行转换 显然我直接套了成品的任意进制转换轮子结果有偏差

    @feiyuanqiu 卧槽 好神奇 这是什么机制?有没有相关介绍文档?

    @b821025551b 这对应关系我也知道,但是扩展开来怎么写?
    virusdefender
        12
    virusdefender  
       Jul 27, 2015
    leetcode 上还有个这样的算法题呢
    ligyxy
        14
    ligyxy  
       Jul 27, 2015
    曾经用R写了一个,和进制转换比起来就是多处理一步位移
    https://gist.github.com/ligyxy/084470b321ff724118e2
    realpg
        15
    realpg  
    OP
    PRO
       Jul 28, 2015
    @ligyxy THX
    睡了一觉起来 精神好一点自己也写出来了
    写完才想起来去看了一下PHP源代码里的自增不就完了……

    @feiyuanqiu THX

    这次是真结贴了 感谢楼上所有尝试帮忙的人
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4736 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 120ms · UTC 04:06 · PVG 12:06 · LAX 21:06 · JFK 00:06
    ♥ Do have faith in what you're doing.