2017-03-29 11 views
1

私は助けが必要です。私が達成しようとしているのは、PHPExcelを使って1行ずつExcelファイルを読むことです。ファイルを読み込んでデータを取得することはできますが、行ごとに読み込む方法を理解することはできません。ここに私のコードです。PHPExcel:行ごとにExcelファイルの行を読む

require_once ('../src/Classes/PHPExcel.php'); 

    $excel_path = '../' . $_SESSION['excel_path']; 

    try { 
     $inputFileType = PHPExcel_IOFactory::identify($excel_path); 
     $excelReader = PHPExcel_IOFactory::createReaderForFile($excel_path); 
     $excelObject = $excelReader->load($excel_path); 
    } catch (Exception $ex) { 
     die('Error loading file"' . pathinfo($excel_path, PATHINFO_BASENAME) . '": ' . $ex->getMessage()); 
    } 

    $sheet = $excelObject->getSheet(0); 
    $highestRow = $sheet->getHighestRow(); 
    $highestColumn = $sheet->getHighestColumn(); 

    for ($row = 1; $row <= $highestRow; $row++) { 
     $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . 
       $row, NULL, TRUE, FALSE); 
     foreach ($rowData as $k) { 
      echo $k[0].'<br />'; 
     } 
    }  
    ? 

私は誰かが私を助けることができた。

答えて

3

$rows = $sheet->rangetoArray('A1:'.$highestColumn . $highestRow, NULL, True, True, False); 
foreach ($rows as $row => $cols) {  
    $line = ''; 
    foreach($cols as $col => $cell){ 
     $line .= $cell." ... "; // ... or some other separator 
    } 
    echo rtrim($line,'. ').'<br />'; 
} 

編集は、内側foreachループの周りに{}を追加するにはループのために、あなたの代わりにこのコードを試してみてください

編:第2オプションを追加 - 表形式のデータ

を作成します

これは私のために動作し、表のキャプションとしてExcelシート名を使用してテーブルを作成します

$sheetname = $sheet->getTitle(); 
$start=1; 
$table = "<table><caption>$sheetname</caption>"; 
$rows = $sheet->rangetoArray('A'.$start.':'.$highestColumn . $highestRow, NULL, True, True, False); 
foreach ($rows as $row => $cols) {  
    $line = '<tr class="'.$row.'">'; 
    foreach($cols as $col => $cell){ 
     $line .= "<td>".$cell."</td>"; // ... or some other separator   
    } 
    if($row == 0) $line = str_replace("td>","th>", $line); 
    $table .= $line.'</tr>'; 
} 
$table .= "</table>";. 

echo $table; 
+0

こんにちは私はそれを3回印刷しています。例: "Roanoke VA 24010"が1行の場合1. Roanokeを印刷し、次の行にRoanoke VAを印刷し、3行目にRoanoke VA、24010を印刷します。 – Ahamed

+0

終了しているようです2番目のforeachループは、行の内容を完了する前に行います。私は第2のforeachを{}で囲むために私の答えを編集しました – Dano

関連する問題