Memo

メモ > 技術 > プログラミング言語: 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;

Advertisement