PHP的Excel多个导出在多个工作表|| 致命错误:未捕获exception“PHPExcel_Exception”

我正在使用PHP Excel,用于导出两张数据。 每个工作表应该有不同的结构和不同的。 在这里,我有代码,我试图用来生成2张不同名称,但相同的数据和结构。 这是我使用的代码:

<?php include '...config.php'; /** Error reporting */ error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); date_default_timezone_set('Europe/London'); if (PHP_SAPI == 'cli') die('This example should only be run from a Web Browser'); /** Include PHPExcel */ require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; // Create new PHPExcel object $objPHPExcel = new PHPExcel(); // FIRST SHEET BEGIN // Rename worksheet $objPHPExcel->getActiveSheet(0)->setTitle('FIRST SHEET'); // Set active sheet index to the first sheet, so Excel opens this as the first sheet //$objPHPExcel->setActiveSheetIndex(); // Set document properties $objPHPExcel->getProperties()->setCreator("test.de") ->setLastModifiedBy("test.de") ->setTitle("Study XLS generated from test.de") ->setSubject("Study details") ->setDescription("This file is automatically generated from test.de") ->setKeywords("Office 2007 test.de") ->setCategory("Studies from test.de"); $query = "SELECT * FROM admin_users "; $result = mysql_query($query); // Loop through the result set $rowNumber = 2; while ($row = mysql_fetch_row($result)) { $col = 'A'; //start from column $ime = $row[3]; //this is data from mysql $jmbg = $row[4]; //this is data from mysql $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', 'Username') ->setCellValue('B1', 'Pass'); $rows = array($ime,$jmbg); foreach($rows as $cell) { $objPHPExcel->getActiveSheet(0)->setCellValue($col.$rowNumber,$cell); $col++; } $rowNumber++; } //FIRST SHEET ENDS // SECOND SHEET BEGIN // Rename worksheet $objPHPExcel->getActiveSheet(1)->setTitle('SECOND SHEET'); $query1 = "SELECT * FROM admin_users "; $result1 = mysql_query($query1); // Loop through the result set $rowNumber1 = 2; while ($row1 = mysql_fetch_row($result1)) { $col1 = 'A'; //start from column $ime1 = $row[3]; //this is data from mysql $jmbg1 = $row[4]; //this is data from mysql //$grad = 'anything else'; //example my excel formulas $objPHPExcel->setActiveSheetIndex(1) ->setCellValue('A1', 'Username') ->setCellValue('B1', 'Pass'); $rows1 = array($ime1,$jmbg1); foreach($rows1 as $cell1) { $objPHPExcel->getActiveSheet(1)->setCellValue($col1.$rowNumber1,$cell1); $col1++; } $rowNumber1++; } //SECOND SHEET ENDS // Redirect output to a client's web browser (Excel5) header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="studies.xls"'); header('Cache-Control: max-age=0'); // If you're serving to IE 9, then the following may be needed header('Cache-Control: max-age=1'); // If you're serving to IE over SSL, then the following may be needed header ('Expires: Mon, 26 Jul 2015 05:00:00 GMT'); // Date in the past header ('Last-Modified: '.gmdate('D, d MYH:i:s').' GMT'); // always modified header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1 header ('Pragma: public'); // HTTP/1.0 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); exit; 

我收到的是:

 Fatal error: Uncaught exception 'PHPExcel_Exception' with message 'You tried to set a sheet active by the out of bounds index: 1. The actual number of sheets is 1.' in /var/www/test/Classes/PHPExcel.php:688 Stack trace: #0 /var/www/test/Examples/01simple-download-xls.php(86): PHPExcel->setActiveSheetIndex(1) #1 {main} thrown in /var/www/test/Classes/PHPExcel.php on line 688 

当我只运行第一张工作正常。 我怎样才能解决这个问题? 谢谢!

使用实例化一个新的PHPExcel对象

 $objPHPExcel = new PHPExcel(); 

只使用一个工作表创build一个PHPExcel对象(工作表#0)。

当你还没有存在的时候,你会告诉它使用第二张纸(第一张纸)

 $objPHPExcel->getActiveSheet(1)->setTitle('SECOND SHEET'); 

在这之前,您需要在PHPExcel对象中创build第二个工作表:

 $objPHPExcel->createSheet();