Jamers Posted January 10, 2015 Report Share Posted January 10, 2015 翻资料找到以下内容,分享之。 //项目需要写了备忘 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 More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now