SOFTELメモ

Softel Inc.

【php】PhpSpreadsheet 使用例

問題

PHPExcelの後継のPhpSpreadsheetが出てますね。

Excel管理しているデータをphpで読み出したいです。

php

答え

使用例。

以下は、同じ形式のシートが多数入ったExcelファイルから、シートごとに所定の位置のデータを読みだしていく例。

わりとスムーズに読み出せる。

<?php

// composer の autoload.php
require 'vendor/autoload.php';

// use 使うのもよし
//use PhpOffice\PhpSpreadsheet\Spreadsheet;
//use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls();
$reader->setReadDataOnly(true);
$spreadsheet = $reader->load('/path/to/excel/file');
foreach ($spreadsheet->getWorksheetIterator() as $worksheet) {
	// シート名
	$worksheet_name = $worksheet->getTitle();
	// セル A2
	$a2 = $worksheet->getCell('A2')->getValue();
	// セル B4
	$b4 = $worksheet->getCell('B4')->getValue();
	// 例えば請求書の明細のような箇所を読み込む。ここでは12行目から99行まで。
	for ($k = 12; $k < 100; ++ $k) {
		$meisai = trim($worksheet->getCell('A' . $k)->getValue());
		$quantity = trim($worksheet->getCell('F' . $k)->getValue());
		$price = trim($worksheet->getCell('G' . $k)->getValue());
		$total = trim($worksheet->getCell('H' . $k)->getValue());
		// 例えばこの後、データベースに格納したり。
		// $db->exec("insert into hoge (a, b, c...) values (...)");
		var_dump($worksheet_name, $a2, $b4, $meisai, $quantity, $price, $total);
	}
}

参考

https://phpoffice.github.io/PhpSpreadsheet/master/

関連するメモ

コメント