2012-07-23 19 views
19

Bir Excel dosyasını okumak ve üzerinde işlem yapmak için PHPExcel kütüphanesini kullanıyorum. Her çalışma sayfasından geçmek istiyorum. Belgeleri kontrol ettim ve bulabildiğim tek şey aktif çalışma sayfası dizinini değiştirmekti ya da sadece belirtilen çalışma sayfalarını yüklüyordu. Tüm çalışma sayfalarına nasıl geçebilirim?PHPExcel ile çalışma sayfalarını dolaşmak

Yardımlarınız için teşekkür ederiz. İşte

başvuru için, dokümantasyon en döngü örneğidir: Sen yineleyicinızı kullandığınız

<?php 
$objReader = PHPExcel_IOFactory::createReader('Excel2007'); 
$objReader->setReadDataOnly(true); 

$objPHPExcel = $objReader->load("test.xlsx"); 
$objWorksheet = $objPHPExcel->getActiveSheet(); 

echo '<table>' . "\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"; 
?> 

cevap

9

./Tests dizinindeki yineleyiciler için kod örneğine baktınız mı? Eğer öyleyse,() PHPExcel nesnesinin yöntemi

+0

Çok teşekkür ederim! Yineleyiciyi Test dizininde buldum - 28iterator.php. getAllSheets() de iyi görünüyor. Teşekkür ederim. – user717236

14

Bunu yapmak düşünüyorum bir foreach döngü kullanmak sağlar çalışma sayfası, bir dizi, döner,

Alternatif getAllSheets WorksheetIterator referans görmüş olabilir . kalmamıştı kadar sonra ne istiyorsan yap, etkin sayfayı arttırır her biri:

İşte
<?php 

    $objReader = PHPExcel_IOFactory::createReader('Excel2007'); 
    $objReader->setReadDataOnly(true); 

    $objPHPExcel = $objReader->load("test.xlsx"); 

    $i = 0; 
    while ($objPHPExcel->setActiveSheetIndex($i)){ 

     $objWorksheet = $objPHPExcel->getActiveSheet(); 
     //now do whatever you want with the active sheet 
     ... 
     $i++; 

    } 

    ... 

?> 
+0

Yardımlarınız için çok teşekkür ederim. Bu iyi çalışıyor! – user717236

+0

İlginç bir yaklaşım. Bu cevap için teşekkürler. – Yitzhak

+1

denemeniz gerekiyor ... inşaatı yakala, çünkü son sayfa istisna atar –

7

Ben yaprak üzerinde yineleme ve levha ile her biri için hücre değer dizisi döndürmek için kullanmak yararlı bir işlev var Dizi anahtarı olarak başlık:

function getSheets($fileName) { 
    try { 
     $fileType = PHPExcel_IOFactory::identify($fileName); 
     $objReader = PHPExcel_IOFactory::createReader($fileType); 
     $objPHPExcel = $objReader->load($fileName); 
     $sheets = []; 
     foreach ($objPHPExcel->getAllSheets() as $sheet) { 
      $sheets[$sheet->getTitle()] = $sheet->toArray(); 
     } 
     return $sheets; 
    } catch (Exception $e) { 
     die($e->getMessage()); 
    } 
}