2012-07-23 1 views
19

PHPExcel 라이브러리를 사용하여 Excel 파일을 읽고 처리합니다. 각 워크 시트를 반복하고 싶습니다. 나는 문서를 확인했고, 찾을 수있는 것은 활성 워크 시트 인덱스를 변경하거나 지정된 워크 시트 만로드하는 것이 었습니다. 모든 워크 시트를 반복 할 수 있습니까?PHPExcel을 사용하여 워크 시트를 반복합니다.

도움 주셔서 감사합니다. 여기

는 참조 용 문서의 반복 예입니다 : 당신은 반복자를 사용하는

<?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"; 
?> 

답변

9

./Tests 디렉토리의 반복기에 대한 코드 예제를 살펴 보았습니까? 그렇다면, 당신은()는 PHPExcel 개체의 방법은 당신이

+0

대단히 감사합니다. 필자는 Test 디렉터리에서 ititerator를 찾았습니다 (28iterator.php). getAllSheets()도 좋습니다. 고맙습니다. – user717236

14

나는 당신이 할 수있는 생각 foreach 루프를 사용할 수 있도록 워크 시트의 배열을 반환

대안 getAllSheets을 WorksheetIterator에 대한 참조를 볼 수도 . 어떤 왼쪽이없는 때까지 당신이 원하는 일을, 활성 시트를 증가 각각 :

여기
<?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

도움 주셔서 대단히 감사합니다. 이것은 잘 작동합니다! – user717236

+0

흥미로운 접근 방법. 그 해답을 가져 주셔서 감사합니다. – Yitzhak

+1

당신은 try ... 캐치 구조가 필요합니다. 마지막 페이지가 예외를 던지기 때문에 –

7

내가 시트 반복 시트와 각각의 셀 값의 배열을 반환하는 데 사용할 수있는 유용한 기능입니다 배열 키로 제목 :

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()); 
    } 
}