2010-11-13 41 views
22

我知道如何阅读我的xlsx电子表格并循环遍历第一张表格。如何使用PHPExcel阅读xlsx文件的表单二?

它有5张纸,我很难得到任何比第一个。

这是我使用的代码,从文档直接。 你可以看到我试图利用setActiveSheet,但是抛出了错误Call to undefined method PHPExcel::setActiveSheet()

代码

$objReader = PHPExcel_IOFactory::createReader('Excel2007'); 
$objReader->setReadDataOnly(true); 
$objPHPExcel = $objReader->load("cmt_school_data.xlsx"); 
//$objPHPExcel->setActiveSheet(1); 
$objWorksheet = $objPHPExcel->getActiveSheet(); 

echo '<table border=1>' . "\n"; 

foreach ($objWorksheet->getRowIterator() as $row) { 

    echo '<tr>' . "\n"; 

    $cellIterator = $row->getCellIterator(); 

    // This loops all cells, even if it is not set. 
    // By default, only cells that are set will be iterated. 
    $cellIterator->setIterateOnlyExistingCells(false); 

    foreach ($cellIterator as $cell) { 
    echo '<td>' . $cell->getValue() . '</td>' . "\n"; 
    } 

    echo '</tr>' . "\n"; 

} 

echo '</table>' . "\n"; 

回答

27

好吧......名字都欺骗。 setActiveSheetIndex还没有一个得到这样的解决方案是这样的

$objReader = PHPExcel_IOFactory::createReader('Excel2007'); 
$objReader->setReadDataOnly(true); 
$objPHPExcel = $objReader->load("cmt_school_data.xlsx"); 
$objWorksheet = $objPHPExcel->setActiveSheetIndex(1); 
//objWorksheet = $objPHPExcel->getActiveSheet(); 
echo '<table border=1>' . "\n"; 
foreach ($objWorksheet->getRowIterator() as $row) { 
    echo '<tr>' . "\n"; 
    $cellIterator = $row->getCellIterator(); 
    $cellIterator->setIterateOnlyExistingCells(false); // This loops all cells, 
                // even if it is not set. 
                // By default, only cells 
                // that are set will be 
                // iterated. 
    foreach ($cellIterator as $cell) { 
    echo '<td>' . $cell->getValue() . '</td>' . "\n"; 
    } 
    echo '</tr>' . "\n"; 
} 
echo '</table>' . "\n"; 
+6

正如你已经发现,setActiveSheet()不存在:setActiveSheetIndex()和setActiveSheetIndexByName()是更改活动提供的两种方法片。 – 2010-11-13 11:33:44

+0

我在哪里可以下载这个图书馆? – heinkasner 2014-06-12 11:51:45

+0

https://phpexcel.codeplex.com/ – Tom 2014-06-13 20:22:42

12
<?php 

/** Include path **/ 
set_include_path(get_include_path() . PATH_SEPARATOR . '../../../Classes/'); 

/** PHPExcel_IOFactory */ 
include 'PHPExcel/IOFactory.php'; 


$inputFileType = 'Excel5'; 
// $inputFileType = 'Excel2007'; 
// $inputFileType = 'Excel2003XML'; 
// $inputFileType = 'OOCalc'; 
// $inputFileType = 'Gnumeric'; 
$inputFileName = './sampleData/example1.xls'; 

echo 'Loading file ',pathinfo($inputFileName,PATHINFO_BASENAME),' using IOFactory with a defined reader type of ',$inputFileType,'<br />'; 
$objReader = PHPExcel_IOFactory::createReader($inputFileType); 
echo 'Loading all WorkSheets<br />'; 
$objReader->setLoadAllSheets(); 
$objPHPExcel = $objReader->load($inputFileName); 


echo '<hr />'; 

echo $objPHPExcel->getSheetCount(),' worksheet',(($objPHPExcel->getSheetCount() == 1) ? '' : 's'),' loaded<br /><br />'; 
$loadedSheetNames = $objPHPExcel->getSheetNames(); 
foreach($loadedSheetNames as $sheetIndex => $loadedSheetName) { 
    echo **$sheetIndex**,' -> ',$loadedSheetName,'<br />'; 
    $sheetData = $objPHPExcel->**getSheet**(**$sheetIndex**)->toArray(null,true,true,true); 
    var_dump($sheetData); 

}?> 
+0

谢谢,非常有帮助 – Ozzy 2012-10-10 13:10:43

+3

+1对于getSheetCount(),我正在搜索它 – Hemc 2013-02-22 14:31:38