Jump to content
新域网络技术论坛

PHP运算EXCEL相关函数


Jamers
 Share

Recommended Posts

翻资料找到以下内容,分享之。

//项目需要写了备忘
function xls_add($start,$add,$isy=0) {
    //起始单元表位置  增加字段 0 X向 1 Y向
    $ru = '/([A-Z]{1,3})(\d{1,5})/si';
    if (preg_match($ru,$start,$mat)) {
        if ($isy==0) {
            //X向
            $mat[1] = cell_add($mat[1],$add);
        }elseif ($isy==1) {
            //Y向
            $mat[2] = cell_add($mat[2],$add);
        }
        return $mat[1].$mat[2];
    }else{
        return $start;
    }
}
  
function cell_add($str,$add) {
    $ru0 = '/\d{1,5}/si';
    $ru1 = '/[A-Z]{1,3}/si';
    $str = strtoupper($str);
    if (!preg_match($ru0,$str) and !preg_match($ru1,$str)) 
        return $str;
    if (preg_match($ru0,$str)) {
        //数字
        return strval(intval($str)+$add);
    }else{
        //字母
        $tmp = 0;
        $all = 0;
        //'AA' = 26+1 BA = 26*2 +1
        $len = strlen($str)-1;
        for ($i=$len;$i>=0;$i--) {
            $tmp = (ord($str[$i])-ORD('A')+1);
                $all += $tmp*pow(26,$len-$i);
        }
        $all += $add;
        $r = '';
        for ($i= 2;$i>0;$i--) {
            if ($all > pow(26,$i)) {
                $tmp = floor($all/pow(26,$i));
                $all -= $tmp*pow(26,$i);
                $r .= chr(ord('A')+$tmp-1);
            }
        }
        if ($all>0) $r .= chr(ord('A')+$all -1);
        return $r;
    }
Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...