ホームページ  >  記事  >  PHPフレームワーク  >  Laravel 開発: Laravel Excel と Spout を使用して Excel ファイルを処理する方法?

Laravel 開発: Laravel Excel と Spout を使用して Excel ファイルを処理する方法?

王林
王林オリジナル
2023-06-15 09:12:441596ブラウズ

Laravel は、開発者が Web アプリケーションを迅速に構築できるようにするための多くの機能と拡張機能を提供する、人気のある PHP 開発フレームワークです。一般的なタスクの 1 つは Excel ファイルの処理です。この記事では、Laravel Excel と Spout を使用して Excel ファイルを処理する方法を学びます。

Laravel Excel は、Excel ファイルのインポートおよびエクスポート用の人気のある拡張機能で、Excel ファイルの読み取り、書き込み、操作のためのシンプルで使いやすいインターフェイスを提供します。 Spout は、大きな Excel ファイルの読み書き用に設計された高速な PHP ライブラリです。

まず、これらの拡張機能をインストールする必要があります。 Laravel 5.5 以降では、Laravel Excel は次のコマンドでインストールできます:

composer require maatwebsite/excel

Spout の場合、次のコマンドでインストールできます:

composer require box/spout

これらの拡張機能をインストールすると、これらを使用して Excel ファイルを処理できるようになります。

Excel ファイルの読み取り

Excel ファイルを読み取るには、Laravel Excel が提供する Excel クラスを使用する必要があります。以下は、Excel ファイル内のすべてのセル データを読み取り、2 次元配列を返す簡単な例です。

use MaatwebsiteExcelFacadesExcel;

$rows = Excel::load('example.xlsx')->all()->toArray();

この例では、all() メソッドは A # を返します。 ##Collection Excel ファイル内のすべての行と列のデータを含むオブジェクト。 toArray()メソッドは、Collection オブジェクトを単純な 2 次元配列に変換します。例:

[
    [
        "Name" => "John Doe",
        "Email" => "johndoe@example.com",
        "Age" => 30
    ],
    [
        "Name" => "Jane Doe",
        "Email" => "janedoe@example.com",
        "Age" => 28
    ],
    // ...
]

get() メソッドを使用して、特定の行またはリスト。たとえば、データの最初の列を取得するには、次のコードを使用できます。

$column = Excel::load('example.xlsx')->get()[0];

Excel ファイルに書き込む

データを Excel ファイルに書き込むには、Laravel Excel のライターを使用する必要があります。クラス。データを含む Excel ファイルを作成する簡単な例を次に示します。

use MaatwebsiteExcelFacadesExcel;
use MaatwebsiteExcelWriter;
use MaatwebsiteExcelClassesPHPExcel;

Excel::create('example', function(Writer $writer) {
    $writer->setTitle('My First Excel');
    $writer->setCreator('John Doe');
    $writer->setDescription('A demonstration of using Laravel Excel');

    $writer->sheet('Sheet1', function($sheet) {
        $sheet->fromArray([
            ['Name', 'Email', 'Age'],
            ['John Doe', 'johndoe@example.com', 30],
            ['Jane Doe', 'janedoe@example.com', 28]
        ]);
    });
})->download('xlsx');

この例では、

create() メソッドを使用して新しい Excel ファイルを作成します。コールバック関数では、Excel ファイルのタイトル、作成者、説明を設定できます。 sheet()メソッドは新しいワークシートを作成し、そこにデータを書き込みます。最後に、download() メソッドは、応答として Excel ファイルをダウンロードします。この場合、ファイルは XLSX 形式でダウンロードされます。

Spout を使用して Excel ファイルを処理する

Spout は、大きな Excel ファイルの読み取りおよび書き込み用に設計された軽量の PHP ライブラリです。 Spout を使用して Excel ファイルからデータを読み取る簡単な例を次に示します。

use BoxSpoutReaderReaderFactory;
use BoxSpoutCommonType;

$reader = ReaderFactory::create(Type::XLSX);
$reader->open('example.xlsx');

foreach ($reader->getSheetIterator() as $sheet) {
    foreach ($sheet->getRowIterator() as $row) {
        $data[] = $row->toArray();
    }
}

$reader->close();

この例では、

ReaderFactory クラス ##Object を通じて $reader# を作成しました。 , Excel ファイルを読み取るために使用されます。 getSheetIterator() メソッドと getRowIterator() メソッドを通じて、ワークシートと行のイテレータを取得でき、toArray() メソッドを使用して取得できます。セルデータ。 $reader->close()このメソッドは、Excel ファイルを閉じるために使用されます。 同様に、Spout の

WriterFactory

クラスと Sheet クラスを使用して、データを Excel ファイルに書き込むことができます。 <pre class='brush:php;toolbar:false;'>use BoxSpoutWriterWriterFactory; use BoxSpoutCommonType; $writer = WriterFactory::create(Type::XLSX); $writer-&gt;openToFile('example.xlsx'); $writer-&gt;addRow(['Name', 'Email', 'Age']); $writer-&gt;addRow(['John Doe', 'johndoe@example.com', 30]); $writer-&gt;addRow(['Jane Doe', 'janedoe@example.com', 28]); $writer-&gt;close();</pre>この例では、

WriterFactory

クラスを使用して $writer オブジェクトを作成し、openToFile() を通じて Excel ファイルを開きます。方法。 addRow() メソッドを使用してワークシートにデータを追加し、最後に close() メソッドを使用して Excel ファイルを閉じます。 結論

この記事では、Laravel Excel と Spout を使用して Excel ファイルを処理する方法を学びました。 Laravel Excel は、シンプルなインターフェイスを通じて Excel ファイルの読み取り、書き込み、変更を行うための便利な方法を提供します。一方、Spout は、大きな Excel ファイルの読み書き用に設計された、より高速な PHP ライブラリです。これらのツールは Excel ファイルの処理を大幅に簡素化し、開発者が Excel データをより簡単に処理および管理できるようにします。

以上がLaravel 開発: Laravel Excel と Spout を使用して Excel ファイルを処理する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。