PHPExcelを利用して、Excelデータを読み込む方法を紹介します。
目次
PHPExcelのインストール
PHPExcelとは、PHPでExcelの読み書きなどができるライブラリです。
Composerを利用してPHPExcelをインストールします。
PHPExcelでExcelデータ取り込み
ここでは、次のデータをもつExcelファイルをPHPExcelを利用して読み込む例を紹介します。
<?php
header("Content-Type: text/html; charset=UTF-8");
// Composerでインストールしたパッケージを読み込みます。環境に合わせて変更してください。
require_once(realpath(__DIR__) . "/../../../composer_pj1/vendor/autoload.php");
// 読み込むExcelファイルを指定して、PHPExcelオブジェクトを生成します。
// 今回は実行プログラムと同一ディレクトリにある「text.xlsx」を読み込みます。
$filepath = __DIR__ . "/test.xlsx";
$phpexcel = PHPExcel_IOFactory::load($filepath);
// 読み込みたいシートを設定し、PHPExcel_Worksheetオブジェクトを生成します。
$phpexcel->setActiveSheetIndex(0);
$sheet = $phpexcel->getActiveSheet();
$sheetData = array();
// 行イテレータで各行のPHPExcel_Worksheet_Rowオブジェクトを繰り返し取得していきます。
foreach ($sheet->getRowIterator() as $row) {
$tmp = array();
// 列イテレータで各列のPHPExcel_Cellオブジェクトを繰り返し取得していきます。
foreach ($row->getCellIterator() as $cell) {
// セルの値を取得します。
$val = $cell->getValue();
$format = $cell->getStyle()->getNumberFormat()->getFormatCode();
// Excelでは、日付や時刻をシリアル値として管理しています。
if ($format === "mm-dd-yy") {
$val = PHPExcel_Style_NumberFormat::toFormattedString($val, PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2);
} elseif ($format === "h:mm") {
$val = PHPExcel_Style_NumberFormat::toFormattedString($val, PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME3);
}
$tmp[] = $val;
}
$sheetData[] = $tmp;
}
var_dump($sheetData);
array (size=4)
0 =>
array (size=5)
0 => string '文字列A' (length=10)
1 => string '文字列B' (length=10)
2 => string '文字列C' (length=10)
3 => string '日付' (length=6)
4 => string '時刻' (length=6)
1 =>
array (size=5)
0 => string 'あああああ' (length=15)
1 => string '佐藤' (length=6)
2 => string 'apple' (length=5)
3 => string '2015-08-21' (length=10)
4 => string '22:55' (length=5)
2 =>
array (size=5)
0 => string 'いいいいい' (length=15)
1 => string '鈴木' (length=6)
2 => string 'orange' (length=6)
3 => string '2015-09-11' (length=10)
4 => string '11:25' (length=5)
3 =>
array (size=5)
0 => string 'ううううう' (length=15)
1 => string '高橋' (length=6)
2 => string 'melon' (length=5)
3 => string '2015-08-17' (length=10)
4 => string '8:05' (length=4)
シリアル値
Excel上の表示 | シリアル値 |
---|---|
2015-08-21 | 42237 |
22:55 | 0.95486111111111 |
そのため日付や時刻の場合、フォーマット処理をしています。