根据输入的数量生成符合EXCEL列标的数组

在使用PHPEXCEL导出数据库的数据到EXECL文件的时候,可以根据当前数据的字段数量,生成符合excel规则的列标

变量名起的有点随意,见谅

demo:
根据输入的数量生成符合EXCEL列标的数组_第1张图片
代码如下:

 

    //目前只支持 A ~ ZZ num <= 702
    $num = isset($_GET['num']) ? $_GET['num'] : '';
    if(empty($num)){
        echo '请输入数量
'
; echo '示例: http://localhost/excel.php?num=100'; }elseif($num > 702){ echo '暂时最大只支持到702'; }else{ $arr = get_field($num); echo '
';
        print_r($arr);
    }

    function get_field($num)
    {     
        $index = ceil(($num - 26) / 26);
        $a = [];
        for ($i = 1; $i <= $index; $i++) {
            $arr = get_excel_field(26 * $i);
            $a = array_merge($a, $arr);
        }
        $final = get_excel_field($num);
        $a = array_merge($a, $final);
        return $a;

    }


//根据字段的数量,生成符合EXCEL规则的列号
    function get_excel_field($num)
    {
        if (empty($num)) {
            return false;
        }
        $index = intval($num / 26); //整数部分
        $offset = $num % 26; //余数部分

        //获取基础字母表
        for ($i = 65; $i < 91; $i++) {
            $ab[] = strtoupper(chr($i));
        }

        if ($num == 26) return $ab;

        $start = 65;
        if ($index < 1) {
            $end = $start + $offset;
            for ($i = $start; $i < $end; $i++) {
                $arr[] = strtoupper(chr($i));
            }
        } else {
            if ($offset == 0) {
                $offset = 26;
                $index = $index - 1;
            }
            $a = get_excel_field($offset);
            $c = get_excel_field($index);
            for ($t = $index - 1; $t < $index; $t++) {
                for ($i = 0; $i < $offset; $i++) {
                    $arr[] = $c[$t] . $a[$i];
                }
            }
        }
        return $arr;
    }

 ?>

你可能感兴趣的:(php)