2010-11-13 7 views
22

मुझे पता है कि पहली शीट के माध्यम से मेरी एक्सएलएसएक्स स्प्रेडशीट और लूप कैसे पढ़ा जाए।मैं 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() दो सक्रिय बदलने के लिए उपलब्ध तरीके हैं चादर। –

+0

मैं इस पुस्तकालय को कहां डाउनलोड कर सकता हूं? – heinkasner

+0

https://phpexcel.codeplex.com/ – Tom

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

धन्यवाद, getSheetCount() के लिए बहुत उपयोगी – Ozzy

+3

+1, मैं इसे खोज रहा था – Hemc

संबंधित मुद्दे