WEBサイト制作・アプリ開発・システム開発・ブランディングデザイン制作に関するご相談はお気軽にご連絡ください。
構想段階からじっくりとヒアリングし、お客様の課題にあわせたアプローチ手法でお客様の“欲しかった”をカタチにしてご提案いたします。
Blog スタッフブログ
Laravel
システム開発
[Laravel]エクセルの出力
システム開発担当のTFです。
やり方
- PHPSpreadsheet のライブラリを入れる
- PHPSpreadsheet で出力したいエクセルを作成する
- 作成したエクセルをダウンロードさせる
サンプル
composer require phpoffice/phpspreadsheet<?php
// 省略
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Style\Border;
use PhpOffice\PhpSpreadsheet\Cell\DataType;
use PhpOffice\PhpSpreadsheet\Style\Fill;
class TestController extends Controller
{
// 省略
/**
* ダウンロード
*/
public function download(Request $request)
{
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// データの作成
$row = 1;
// タイトル
$sheet->setCellValue("B{$row}", 'テストタイトル');
$sheet->mergeCells("B{$row}:I".($row+1)); //指定範囲のセル結合
$sheet->getStyle("B{$row}")->getAlignment()->setVertical(Alignment::VERTICAL_CENTER);
$sheet->getStyle("B{$row}")->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle("B{$row}")->getFont()->setSize('23');
$row+=2;
// データの作成
$data = ['id', '日付', '金額'];
$sheet->fromArray($data, null, "B{$row}");
$row++;
// Excelファイルをブラウザからダウンロードする
$fileName = 'テスト_' . date('Ymd') . '.xlsx';
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;');
header("Content-Disposition: attachment; filename=\"{$fileName}\""); header('Cache-Control: max-age=0');
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save('php://output');
exit;
}
}