Excel ExcelでマルチワークシートExcelファイルを作成する


最近、プロジェクトのために大きなデータエクスポートを作成しなければなりませんでした.私はそれが非常に簡単で、使用するように非常に簡単で、大量のデータをCSVファイルやExcelファイルにエクスポートするときは、ブラウザにダウンロードするストリームを使用するとうまく動作するように空間のシンプルなExcelパッケージを使用してください.この特定のプロジェクトは、追加の要件を持っていた、一度に複数のワークシートのデータをエクスポートします.幸いにも、このパッケージは、あなたもこれを行うことができます.

writerオブジェクト
Simple Excelパッケージは、フードの下にbox/spoutパッケージを使用しています.ReadMeでは、->getWriter()を使用して、基本的なライターになることができます.
$writer = SimpleExcelWriter::create($pathToCsv)->getWriter();
ボックス/噴出パッケージのドキュメントにジャンプする場合は、Playing with sheetsにセクションがあります.ドキュメントでは、現在のシートを取得し、現在のシートの名前を設定し、新しいシートを作成する方法を確認できます.

ワークシートの命名
ワークシートの名前を指定するには、getCurrentSheet()を使用して、現在のシートをライターで取得し、名前を設定するにはsetName()を使用します.
$writer = SimpleExcelWriter::streamDownload('your-export.xlsx')->getWriter()
$nameSheet = $writer->getCurrentSheet();
$nameSheet->setName('Names');

新しいワークシートの作成
新しいシートを作成するには、addNewSheetAndMakeItCurrent()を使用することができますし、この新しいシートの名前を設定するためにもう一度setName()を使用することができます.
$addressSheet = $writer->addNewSheetAndMakeItCurrent();
$addressSheet->setName('Addresses');

一緒にすべてをもたらす
今、我々はどのように我々は一緒にそれをもたらすことができる個々のタスクを行う方法を知っている.
  • SimpleExcelWriter
  • を使用してStreamDownloaderを作成します
  • 現在のシートを取得して名前を取得する
  • は「名前」シート
  • にデータの行を加えます
  • 新しいシートを作成し、現在のシートを作成します.
  • ヘッダー行を'アドレス'
  • に加えます
  • は「アドレス」シート
  • にデータの行を加えます
  • 最終的に、ストリームをブラウザに戻す
  • use Spatie\SimpleExcel\SimpleExcelWriter;
    
    $stream = SimpleExcelWriter::streamDownload('your-export.xlsx');
    
    $writer = $stream->getWriter();
    
    // Set the name of the current sheet to Names
    $nameSheet = $writer->getCurrentSheet();
    $nameSheet->setName('Names');
    
    // Add rows to the Names sheet
    $stream->addRows([
        ['first_name' => 'Boaty', 'last_name' => 'Mc Boatface'],
        ['first_name' => 'Dave', 'last_name' => 'Mc Dave'],
    ]);
    
    // Create a new sheet and set the name to Addresses
    $addressSheet = $writer->addNewSheetAndMakeItCurrent();
    $addressSheet->setName('Addresses');
    
    // Manually add header rows to the Addresses sheet
    $stream->addRow(['house_number', 'postcode']);
    
    // Add rows to the Addresses sheet
    $stream->addRows([
        ['house_number' => '1', 'postcode' => 'AB1 2BC'],
        ['house_number' => '2', 'postcode' => 'AB1 2BD'],
    ]);
    
    return $stream->toBrowser();
    
    ラーラーブでの輸出の詳細については、Using Laravel Resource Collections with exportsをチェックしてください.
    単一のワークシートを作成するときは、単純なExcelパッケージは通常、私たちのヘッダー行を作成しますが、新しいシートを作成するときに、データの新しいヘッダーを定義する必要があるようです.
    以下に出力されたExcelファイルのスクリーンショットを示します.


    PhotoWilfred IvenによるStockSnap