WindowsのPHPでExcelを読み込んでみる

Windows環境にて、PHPでCOMを使ってExcelを読み込んでみる。

【参考】
WindowsPHPExcelを操作する - それマグで!
http://takuya-1st.hatenablog.jp/entry/20071213/1197513796

下記のExcelファイルを読み込んでみる。

sample.xlsx

sample.php
<?php
// EXCELのインスタンスを作成
$excel = new COM("excel.application") or die;

// ファイルを開く
$file_name = dirname(__FILE__) . "/sample.xlsx";
$file = $excel->Workbooks->Open($file_name);

foreach ($file->Worksheets as $sheet) {

  // シート名を表示
  echo $sheet->Name . "\n";

  // セルの値を表示
  for ($rows = 1; $rows <= 4; $rows++) {
    for ($cols = 1; $cols <= 2; $cols++) {
      echo $sheet->Cells($rows, $cols)->Value . " ";
    }
    echo "\n";
  }
  echo "\n";
}

// ファイルを閉じる
$file->Close();

// Excelを終了
$excel->Quit();

実行すると、下記のように表示される。

UsedRangeを使う場合

UsedRangeを使うと有効な範囲だけ取得できる。

  // セルの値を表示
  for ($rows = 1; $rows <= 4; $rows++) {
    for ($cols = 1; $cols <= 2; $cols++) {
      echo $sheet->Cells($rows, $cols)->Value . " ";
    }
    echo "\n";
  }

↓下記のように書き換える

  // セルの値を表示
  foreach ($sheet->UsedRange->Rows as $row) {
    foreach ($row->Columns as $cell) {
      echo $cell->Value . " ";
    }
    echo "\n";
  }

「変更を保存しますか」が出る場合

プログラム内でExcelファイルを閉じる際、
「変更を保存しますか」はDisplayAlertsを0にするといいっぽい。

$excel->DisplayAlerts = 0;