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/

関連するメモ

コメント