根据数字获取Excel的列,比如 输入 1 得到 A,输入26 得到 Z, 输入 29 得到 AC

/**
   * 从白哥那借鉴(copy)的方法,牛逼plus
   * 获取Excel的列,比如 输入 1 得到 A,输入26 得到 Z, 输入 29 得到 AC
   *
   * @param $index
   * @return string|void
   */
public function getExcelValue($index)
{
        $index = (int)$index;if ($index <= 0) return; //输入检测
        $dimension = ceil(log(25 * $index + 26, 26)) - 1;  //算结果一共有几位,实际算的是位数减1,记住是26进制的位数
        $n = $index - 26 * (pow(26, $dimension- 1) - 1) / 25; //算结果在所在位数总数中排第几个
        $n--; //转化为索引

        return str_pad(
            str_replace(
                array_merge(range(0, 9), range('a', 'p')),
                range('A', 'Z'), base_convert($n, 10, 26)
            ), $dimension, 'A', STR_PAD_LEFT
        ); //翻译加补齐
}
posted @ 2020-09-09 14:00  alisleepy  阅读(514)  评论(0编辑  收藏  举报