メモ > 技術 > プログラミング言語: PHP > Excelの読み書き
Excelの読み書き
現在PHPExcelは非推奨になっている。
後継としてPhpSpreadsheetがある。
PHPExcelとPhpSpreadsheetの比較 #PHP - Qiita
https://qiita.com/C_HERO/items/1b4b5ed467b6bf390fcd
PHPでExcelを読み書きできるPhpSpreadsheetのインストールと簡単な使い方 | 株式会社レクタス
https://www.rectus.co.jp/archives/18375
[PHP]PHPExcelとPhpSpreadsheetをサンプルコードで比較
https://zenn.dev/c_hero/articles/82f32cb01bcb67
PhpSpreadsheetでExcelを読み書きしてExcelとしてダウンロードする #PHP - Qiita
https://qiita.com/haruna-nagayoshi/items/bccc4b844e909608f514
LaravelとPHP SpreadsheetでExcelファイルを簡単に操作する方法 | ユアスク
https://your-school.jp/laravel-phpspreadsheet/248/
phpによるサイズの大きなExcelデータファイルの読み込み - LeafWindow
https://www.leafwindow.com/read-large-excel-file-with-php/
以下でライブラリを導入する。
$ composer require phpoffice/phpspreadsheet
Excelファイルへの書き込みは、以下のようにして行なえる。
<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
//use PhpOffice\PhpSpreadsheet\IOFactory;
// インスタンスを作成
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// データを定義
$data = [
['名前', 'ひらがな', '年齢', '性別'],
['太郎', 'たろう', '12才', '男'],
['花子', 'はなこ', '15才', '女'],
];
$sheet->fromArray($data, null, 'A1');
// Excelファイルを保存
$writer = new Xlsx($spreadsheet);
//$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save('test_' . date('Ymd') . '.xlsx');
exit('Complete');
Excelファイルからの読み込みは、以下のようにして行なえる。
<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
//use PhpOffice\PhpSpreadsheet\Spreadsheet;
// ファイルを読み込み
$reader = new Xlsx();
//$reader = IOFactory::createReader('Xlsx');
$spreadsheet = $reader->load('sample.xlsx');
// シートを読み込み
$sheet = $spreadsheet->getActiveSheet();
// シートの内容を配列にして返す
$sheetData = $sheet->toArray();
var_dump($sheetData);
exit;
以下のようにすると、シート名とともに複数のシートを読み込める。
<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
//use PhpOffice\PhpSpreadsheet\Spreadsheet;
// ファイルを読み込み
$reader = new Xlsx();
//$reader = IOFactory::createReader('Xlsx');
$spreadsheet = $reader->load('sample1.xlsx');
// シート数を取得
$sheetsCount = $spreadsheet->getSheetCount();
for ($i = 0; $i < $sheetsCount; $i++) {
// シートを切り替え
$spreadsheet->setActiveSheetIndex($i);
// シートを読み込み
$sheet = $spreadsheet->getActiveSheet();
// シート名を取得
$sheetName = $sheet->getTitle();
// シートの内容を配列にして返す
$sheetData = $sheet->toArray();
print($sheetName);
print_r($sheetData);
}
exit;