2013-10-11 65 views
0

我試圖創建一個簡單的Excel文檔,其中包含一個3列的列表。 (姓,名,電子郵件地址)Kohana 3.2 + PHPExcel在寫入超過31行時創建空文檔。

當我年產量超過31行,一個空白Excel文件創建。有誰知道如何修理它?

我下面的代碼:

$guests = ORM::factory('guest') 
     ->order_by('last_name', 'ASC') 
     ->find_all() 
    ->as_array(); 

$columns = array('first_name', 'last_name', 'email'); 


$objPHPExcel = new PHPExcel(); 

$objPHPExcel->getProperties() 
     ->setCreator('Me') 
     ->setLastModifiedBy('Me) 
     ->setTitle('Guest List') 
     ->setSubject('Guest List') 
     ->setDescription('Title of Report, run on ' . date('m/d/Y H:i:s')); 
$objPHPExcel->createSheet(0); 
$objPHPExcel->setActiveSheetIndex(0); 

    foreach($guests as $row => $guest) { 
     $source = array(); 
     $column = 0; 
     $next_row = $objPHPExcel->getActiveSheet()->getHighestRow(); 

     foreach($guest->as_array() as $column_name => $data) { 
      if(in_array($column_name, $columns)) { 

       $objPHPExcel->getActiveSheet() 
       ->setCellValueByColumnAndRow($column, $next_row+1, $data); 

       $column++; 
       // unset($data); 
      } 
     } 

    } 

    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 
    $this->response->body($objWriter->save('php://output')); 
    $this->response->send_file(TRUE, 'GuestList.xls'); 
+0

首先查看錯誤消息的日誌;或在文本編輯器中打開生成的文件,查看是否有任何錯誤消息 –

+0

我的日誌文件中沒有生成錯誤,並且生成的文件爲零字節..因此沒有錯誤。 幸運的是,我發現了一個解決方案來解決我的問題。 –

+0

答案是將文件寫入磁盤,_ ** THEN ** _使用send_file()方法設置要下載的文件。 –

回答

0

的Kohana也很難處理使用由send_file()方法渲染的文件,因此,使用從PHPExcel內置的方法將文件寫入磁盤。然後使用Kohana將保存的文件作爲下載。

$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); 
$objWriter->save($filename, 'EXCEL2007'); 
$this->response->send_file(DOCROOT.$filename);