2010-11-13 94 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