PHPExcel導到excel報錯

來源:互聯網
上載者:User
用的TP3.2+PHPExcel
報錯頁面:

public function outxls() {$model = D($this->dbname);$map = $this->_search();if (method_exists($this, '_filter')) {$this->_filter($map);}$list = $model->where($map)->field('id,status,yewujindu,fenlei,uid,juid,juname,uuid,uuname,xcrq,xingming,phone,type,introduce,introphone,daikuanpro,addtime,uname,addm,updatetime,sex,birth,marry,shenhu,shebaonianshu,shebaojishu,baoxianjiaoe')->select();    $headArr=array('ID','進展','公司名稱','下次聯絡','連絡人','添加人','添加時間','更新時間');    $filename='客戶管理';$this->xlsout($filename,$headArr,$list);}

懷疑是匯出欄位太多了,匯出26個欄位都可以的,再加一個27個就報錯了,是不是在哪可以改匯出欄位限制的?


回複討論(解決方案)

Invalid cell coordinate 無效的儲存格座標

把你的 xlsout 方法貼出了看看!
關鍵是列號產生的部分

Invalid cell coordinate 無效的儲存格座標

把你的 xlsout 方法貼出了看看!
關鍵是列號產生的部分


public function xlsout($filename='資料表',$headArr,$list){//匯入PHPExcel類庫,因為PHPExcel沒有用命名空間,只能inport匯入import("Org.Util.PHPExcel");import("Org.Util.PHPExcel.Writer.Excel5");import("Org.Util.PHPExcel.IOFactory.php");$this->getExcel($filename,$headArr,$list);}publicfunction getExcel($fileName,$headArr,$data){//對資料進行檢驗if(empty($data) || !is_array($data)){die("data must be a array");}//檢查檔案名稱if(empty($fileName)){exit;}$date = date("Y_m_d",time());$fileName .= "_{$date}.xls";//建立PHPExcel對象,注意,不能少了\$objPHPExcel = new \PHPExcel();$objProps = $objPHPExcel->getProperties();//設定表頭$key = ord("A");foreach($headArr as $v){$colum = chr($key);$objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum.'1', $v);$key += 1;}$column = 2;$objActSheet = $objPHPExcel->getActiveSheet();//設定為文字格式設定foreach($data as $key => $rows){ //行寫入$span = ord("A");foreach($rows as $keyName=>$value){// 列寫入$j = chr($span);$objActSheet->setCellValueExplicit($j.$column, $value);$span++;}$column++;}$fileName = iconv("utf-8", "gb2312", $fileName);//重新命名表// $objPHPExcel->getActiveSheet()->setTitle('test');//設定活動單指數到第一個表,所以Excel開啟這是第一個表$objPHPExcel->setActiveSheetIndex(0);ob_end_clean();//清除緩衝區,避免亂碼header('Content-Type: application/vnd.ms-excel');header("Content-Disposition: attachment;filename=\"$fileName\"");header('Cache-Control: max-age=0');$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');$objWriter->save('php://output'); //檔案通過瀏覽器下載exit;}

           $span = ord("A");            foreach($rows as $keyName=>$value){// 列寫入                $j = chr($span);                 $objActSheet->setCellValueExplicit($j.$column, $value);                $span++;            }

這就不對了!
當 $span = ord('Z')+1 的時候 chr(($span) 得到的是 [
顯然是錯誤的,正確的應是 AA
所以需要一個這樣的函數進行計算
function CellName($n) {  $r = '';  do {    $m = $n % 26;    $n = intval($n / 26);    $r = chr(65 + $m - ($r ? 1 : 0)) . $r;  }while($n > 0);  return $r;}

好在 php 還保留了 C 語言的一些特性,可以很簡單的做這個計算
$c = 'A';for($i=0; $i<100; $i++) printf("%s %s\n", $i, $c++);


利用這個特性,你的程式可寫作
           $span = "A";            foreach($rows as $keyName=>$value){// 列寫入                $j = $span;                 $objActSheet->setCellValueExplicit($j.$column, $value);                $span++;            }

           $span = ord("A");            foreach($rows as $keyName=>$value){// 列寫入                $j = chr($span);                 $objActSheet->setCellValueExplicit($j.$column, $value);                $span++;            }

這就不對了!
當 $span = ord('Z')+1 的時候 chr(($span) 得到的是 [
顯然是錯誤的,正確的應是 AA
所以需要一個這樣的函數進行計算
function CellName($n) {  $r = '';  do {    $m = $n % 26;    $n = intval($n / 26);    $r = chr(65 + $m - ($r ? 1 : 0)) . $r;  }while($n > 0);  return $r;}

好在 php 還保留了 C 語言的一些特性,可以很簡單的做這個計算
$c = 'A';for($i=0; $i<100; $i++) printf("%s %s\n", $i, $c++);


利用這個特性,你的程式可寫作
           $span = "A";            foreach($rows as $keyName=>$value){// 列寫入                $j = $span;                 $objActSheet->setCellValueExplicit($j.$column, $value);                $span++;            }


多謝指點!
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.