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

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

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

demo:
输出结果
代码如下:

<?php 

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

 ?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值