Help us understand the problem. What is going on with this article?

Laravelでエクセルを生成してS3に送信する方法

More than 1 year has passed since last update.

環境

Laravel 5.1
"maatwebsite/excel": "~2.1.0"
PHP7.0

maatwebsiteのエクセルライブラリを使ってエクセルを作成してstringに変換してputする
ファイルのオブジェクトそのままは渡せないので注意

createExcelAndSendS3.php
    $fileName = $date . '.xls';

    $fileContent = Excel::create($fileName , function($excel) use ($licencies) {
        $excel->sheet('Excel', function($sheet) use ($licencies) {
            $sheet->fromArray($licencies);
        });
    })->string('xls');

    Storage::disk('s3')->put($fileName, $fileContent);

ちなみにmaatwebsite/excelのバージョンが3.0以上ならこういう書き方ができる(3.1ならオプションを色々使える)

storeExcelToS3.php
public function storeExcel() 
{
    // Store on a different disk (e.g. s3)
    Excel::store(new InvoicesExport(2018), 'invoices.xlsx', 's3');

    // Store on a different disk with a defined writer type. 
    Excel::store(new InvoicesExport(2018), 'invoices.xlsx', 's3', Excel::XLSX);
}

外部とのアクセスはFWの中まで読まないと仕様がわからない時があるなぁ
そもそもExcelのライブラリのバージョンあげられればワンライナーで書けたんだけど・・・

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away