2017-02-10 5 views
0

私のxlsxファイルのセルから値を取得しようとしています。私の2つのループの中でgetCellbyColumnAndRow()->getValue()機能を使用しています。私のforループでセルの値を取得します。無限ループで固まってしまう

$file = 'test.xlsx'; 
try { 
    $inputFileType = PHPExcel_IOFactory::identify($file); 
    $objReader = PHPExcel_IOFactory::createReader($inputFileType); 
    $objPHPExcel = $objReader->load($file); 
    $sheet = $objPHPExcel->getActiveSheet(); 
} catch(Exception $e) { 
    die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage()); 
} 

// get worksheet dimentions 
$higestRow = $sheet->getHighestDataRow(); 
$highestCol = $sheet->getHighestDataColumn(); 


//get value from all the cells 
for($i = 1; $i <= $higestRow; $i++){ 
    for($j = 'A'; $j <= $highestCol; $i++){ 
     echo $sheet->getCellByColumnAndRow($j, $i)->getValue(); 
     echo "</br>"; 
    } 
} 

しかし、それは無限ループに詰まっているようです。どうして?

また、getCellByColumnAndRow('I', 16);を入力すると、セルA16の値が取得されます。しかし、私がするときgetCellByColumnAndRow(8,16)。私はI16から値を取得します。だから、これはまた、行のインデックスは1から始まることを意味し、列インデックスは、ループが間違って見えます。このために1

+0

が存在すべきであると仮定($のJ = 'A'; $ J <= $ highestCol; $ iが++){':偶数と'$ i ++'を '$ j ++'に修正すると、 '$ highestCol'が' Z'より大きい場合、これは無限ループになります。 '!== $ highestCol'を使う必要があります。あなたのループの前に '$ highestCol'(最終列を得るために) –

答えて

1

で始まる、あなたは$iをインクリメントしていると私はあなたが$j

//for($j = 'A'; $j <= $highestCol; $i++){ 
//---------------------------------^^^^ 

のあるべきインクリメントするメンターだと思う

for($j = 'A'; $j <= $highestCol; $j++){ 
1

私は `行の$j++for($j = 'A'; $j <= $highestCol; $i++){

関連する問題