【Laravel】PhpSpreadsheetの導入と使い方! 俺用メモ!

どうもきよです!

今回は業務で使ったPhpSpreadsheetの使い方をメモしていきます。

PHPでのExcel操作は、こちらのライブラリを使用すると便利ですので、

ぜひご確認ください!

■公式
PhpSpreadsheet公式

スポンサーリンク




導入方法

・コンソールから下記コマンドを実行

composer require phpoffice/phpspreadsheet

使い方

■Class内でライブラリをuseする

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Cell\Coordinate;

■Excelのインスタンス作成

$spreadsheet = new Spreadsheet();

※このインスタンスに、カスタマイズしていきます。

※デフォルトで「Worksheet」というシートが作成されています。

■シートの追加

$sheet_name = 'シート1';
$sheet_name = new Worksheet($spreadsheet, $sheet_name);
$spreadsheet->addSheet($sheet_name);

※「シート1」というシートが作成されます。

※シートのindex番号は「0」からスタートです。

■Excelファイルを作成する(実体の作成)

$file_path = '/tmp/';
$file_name = 'hoge.xlsx';
$writer = new Xlsx($spreadsheet);
$writer->save($file_path.$file_name);

※「/tmp/hoge.xlsx」が出来上がります。

■操作するシートの選択

$sheet_index = 0;
$spreadsheet->setActiveSheetIndex($sheet_index);

※デフォルトの「Worksheet」と「シート1」のシートがあった場合、0番目なので「Worksheet」のシートを操作する

■シート名の変更

$sheet_name = 'シート2';
$spreadsheet->getActiveSheet()->setTitle($sheet_name, false);

※現在の操作シートが「Worksheet」の場合、「Worksheet」→「シート2」に変更する

■シート名からシートindex番号を取得

$sheet_name = 'シート1';
$spreadsheet->getIndex($spreadsheet->getSheetByName($sheet_name));

※「Worksheet」と「シート1」のシートがあった場合、「1」が返ります

■データを書き込む

$data = [
  [1,2,3],
  ['hoge1'],
  ['hoge2']
];
$spreadsheet->getActiveSheet()->fromArray($data, NULL, $start_cell, true);
// 第一引数:書き込むデータ配列
// 第二引数:特定の値があったときに書き込みを拒否する?
// 第三引数:書き込みの開始セル(デフォルトは「A1」)
// 第四引数:型を厳しく見るかどうか?(デフォルトは「false」)falseだと「0」を書き込んだ場合空白で表示される

※上記の例だと、A1=1, A2=2, A3=3, B1=hoge1, C1=hoge2 として書き込まれる

・縦方向に書き込む例

$data = [1,2,3];
$vertical = array_chunk($data, 1);
$spreadsheet->getActiveSheet()->fromArray($vertical);

※上記の例だと、A1=1, B1=2, C1=3 として書き込まれる

■セルのデータを取得する

$cell = 'B3';
$this->spreadsheet->getActiveSheet()->getCell($cell)->getValue();

※B3に書かれているデータを取得できます。

■セルの結合

$cell = 'B1:C1';
$spreadsheet->getActiveSheet()->mergeCells($cell);

※B1とC1を結合します。

■列の横幅を指定する

$column = 'A';
$width = '14.40';
$spreadsheet->getActiveSheet()->getColumnDimension($column)->setWidth($width);

※A列を14.40の横幅にする

■行の高さを指定する

$row = 2;
$height = 33.75;
$spreadsheet->getActiveSheet()->getRowDimension($row)->setRowHeight($height);

※2行目のセルを33.75の高さにする

■セル内の上下の文字の位置を指定する

$cell = 'A1:C1';
$position = \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER;
$spreadsheet->getActiveSheet()->getStyle($cell)->getAlignment()->setVertical($position);

※A1からC1の縦方向の文字の位置を中央にする

※その他の位置は「PhpOffice\PhpSpreadsheet\Style\Alignment」を参照してください

その他にもたくさんの設定が可能ですが、

今回はこの辺で。。

以上、よろしくお願いいたします。

スポンサーリンク




シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク




%d人のブロガーが「いいね」をつけました。