我想在我的Zend應用程序中使用phpExell打印出一個Excel文件與多個工作表。phpExcell生成額外的工作表
在我的控制器類,我有以下的全局變量...
public $objPHPExcel;
這是在像這樣的動作函數初始化...
$this->objPHPExcel = new PHPExcel();
的動作,然後通過一些數據庫迭代電話,建立一份報告。在每次迭代中,它會調用以下函數,以整數形式傳遞工作表索引,打印輸出數據以及包含工作表名稱的字符串。
protected function buildWorksheet($index, $report, $repName) {
//build new worksheet after default
if($index > 0) {
$objWorksheet = $this->objPHPExcel->createSheet();
$this->objPHPExcel->addSheet($objWorksheet);
} else {
$this->objPHPExcel->setActiveSheetIndex($index);
$objWorksheet = $this->objPHPExcel->getActiveSheet();
}
//write the worksheet
$col = 0;
$row = 1;
foreach($report as $entry) {
foreach($entry as $key => $value) {
$objWorksheet->setCellValueByColumnAndRow($col, $row, $value);
$col++;
}
$row++;
$col = 0;
}
$objWorksheet->setTitle($repName);
}
然後,回到我打印出來的Excel文件中的動作......
$objWriter = PHPExcel_IOFactory::createWriter($this->objPHPExcel, 'Excel5');
ob_start();
if (headers_sent()) die("**Error: headers sent");
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header('Content-Disposition: attachment;filename="simple.xls"');
header("Content-Transfer-Encoding: binary");
ob_clean();
$objWriter->save('php://output');
exit();
當我在Excel中打開文件時,我得到以下信息...
Excel found unreadable content in 'simple.xls'. Do you want to recover the contents of this workbook?
我點擊是。然後得到兩個「重命名無效的工作表名稱」。修復錯誤信息文件包含每個迭代的工作表,但是對於默認工作表之後的每個工作表,它會添加一個額外的工作表爲什麼會創建額外的電子表格?