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

Laravel 開発: Laravel Excel と PHPOffice を使用して Excel ファイルを読み書きする方法?

PHPz
PHPzオリジナル
2023-06-13 17:57:582655ブラウズ

ビジネスや金融の分野で Excel ファイルが広く使用されるようになったことで、Excel ファイルを Web アプリケーションに統合することは、開発者に必要なスキルの 1 つになりました。 Laravel は人気のある PHP フレームワークであるため、そのエコシステムには Excel ファイルの読み書きに役立つパッケージが多数あります。この記事では、Laravel Excel と PHPOffice ライブラリを使用して、Laravel アプリケーションで Excel ファイルを読み書きする方法を紹介します。

Laravel Excel とは何ですか?

Laravel Excel は、Laravel フレームワーク用に開発された強力な Excel 処理ツールです。このツールは、Excel ファイルのインポートとエクスポートを簡単に行うのに役立つ使いやすい API を提供します。このツールの主な利点の 1 つは、Excel ソフトウェアに依存せずに Excel ファイルを直接操作できることです。

Laravel Excel のインストールは Composer を通じて実行できます。ターミナルで Laravel プロジェクトのディレクトリに移動し、次の Composer コマンドを実行します。

composer require maatwebsite/excel

このコマンドは、Laravel Excel の最新バージョンを Packagist からダウンロードし、インストール プロセスを自動的に完了します。

Laravel Excel を使用して Excel ファイルをエクスポートするには?

Laravel Excel は、新しい Excel ファイルを作成したり、既存の Excel ファイルを開いて編集したりできるプロキシ クラスである Excel クラスを提供します。このクラスを使用して、Laravel アプリケーションで Excel ファイルをエクスポートできます。

プロジェクトに新しい Excel ファイルを作成します。Laravel Excel が提供する次のテンプレートを使用できます:

<?php

namespace AppExports;

use MaatwebsiteExcelConcernsFromCollection;
use MaatwebsiteExcelConcernsWithHeadings;

class ExampleExport implements FromCollection, WithHeadings
{
    public function headings(): array
    {
        return [
            'ID',
            'Name',
            'Email',
            'Phone',
        ];
    }

    /**
    * @return IlluminateSupportCollection
    */
    public function collection()
    {
        return User::select('id', 'name', 'email', 'phone')->get();
    }
}

上記のコードでは、ExampleExport という名前のクラスを定義します。このクラスは、Excel ファイルの生成に必要なメソッドを提供する FromCollection インターフェイスと WithHeadings インターフェイスを使用します。

Heading() メソッドでは、Excel ファイルのヘッダーを定義します。これらのヘッダーは Excel ワークシートの最初の行にリストされます。 collect() メソッドでは、データベースからユーザー レコードを取得し、クラスを呼び出したコントローラーにそれを返します。

Excel ファイルをエクスポートするには、次のようにコントローラー メソッドで ExampleExport をインスタンス化します。

public function export()
{
    return Excel::download(new ExampleExport, 'users.xlsx');
}

上記のコードでは、Laravel Excel が提供する download() メソッドを使用して、ExampleExport からエクスポートします。エクセルファイル。このメソッドには 2 つのパラメータが必要です。最初のパラメータは ExampleExport インスタンス、2 番目のパラメータは Excel ファイル名です。

ブラウザでエクスポート メソッドの URL にアクセスすると、users.xlsx ファイルをダウンロードするように求められます。

Laravel Excel を使用して Excel ファイルをインポートするにはどうすればよいですか?

Excel ファイルを読み取り、そのデータをデータベースにインポートする場合、Laravel Excel が提供する import() メソッドを使用できます。このメソッドは、ファイル オブジェクト、タスク コールバック、およびワークシート名という 3 つのパラメーターを受け入れます。

Excel ファイルをインポートする方法を示すために、以下に示すように UserImport というクラスを作成します。

<?php

namespace AppImports;

use AppUser;
use MaatwebsiteExcelConcernsToModel;

class UserImport implements ToModel
{
    public function model(array $row)
    {
        return new User([
            'name' => $row[0],
            'email' => $row[1],
            'phone' => $row[2],
        ]);
    }
}

上記のコードでは、ToModel インターフェイスを使用して UserImport クラスを実装しました。 ToModel インターフェイスは、Excel データの各行をモデル オブジェクトに変換する必須の model() メソッドを提供します。上記のコードでは、Excel ファイルから最初の 3 つの列を解析し、それらを使用して新しいユーザー レコードを作成しました。

以下に示すように、コントローラーで import() メソッドを使用して Excel ファイルをインポートします。

public function import(Request $request)
{
    $file = $request->file('file');
    Excel::import(new UserImport, $file);
    return redirect()->back()->with('success', 'Excel file imported successfully.');
}

上記のコードでは、アップロードされた Excel ファイル オブジェクトを取得し、Laravel Excel のオブジェクトに渡します。 import( ) メソッドを使用して、UserImport クラスにインポートします。インポートが成功すると、システムは「Excel ファイルは正常にインポートされました」という成功メッセージを含むリダイレクト応答をユーザーに送信します。

PHPOffice ライブラリを使用して Excel ファイルを読み書きするにはどうすればよいですか?

PHPOffice は、Excel、Word、PowerPoint など、さまざまな種類の Office ファイルの読み取りと書き込みに使用される PHP ライブラリです。 PHPOffice は、Laravel Excel とは異なり、特定のフレームワーク用に開発されていないため、あらゆる PHP アプリケーションで使用できます。

PHPOffice をインストールする前に、PHP Zip 拡張機能と PHP XML 拡張機能がインストールされていることを確認する必要があります。

Composer を使用して PHPOffice のスプレッドシート ライブラリをインストールするには、次のコマンドを使用できます:

composer require phpoffice/phpspreadsheet

新しい Excel ファイルを作成するには、次のコードを使用できます:

<?php

use PhpOfficePhpSpreadsheetSpreadsheet;
use PhpOfficePhpSpreadsheetWriterXlsx;

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello World!');
$sheet->setCellValue('B1', 'This is PHPOffice.');

$writer = new Xlsx($spreadsheet);
$writer->save('hello.xlsx');

上記のコードでは、まず新しいスプレッドシートを作成し、その最初の行の最初の 2 列に「Hello World!」セルと「This is PHPOffice.」セルを追加します。次に、スプ​​レッドシートを hello.xlsx ファイルに保存します。

既存の Excel ファイルを開いて編集するには、次のコードを使用できます。

<?php

use PhpOfficePhpSpreadsheetIOFactory;

$spreadsheet = IOFactory::load('hello.xlsx');
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('C1', 'This cell has been added.');

$writer = new Xlsx($spreadsheet);
$writer->save('hello.xlsx');

上記のコードでは、IOFactory クラスを使用して既存の Excel ファイルをディスクからロードします。次に、ファイルのアクティブなワークシートを開き、そこに新しいセルを追加しました。最後に、更新内容を元のファイルに保存します。

結論

この記事では、Laravel Excel と PHPOffice ライブラリを使用して、Laravel アプリケーションで Excel ファイルを読み書きする方法を紹介しました。 Laravel Excel を使用して Excel ファイルをエクスポートおよびインポートする方法と、PHPOffice ライブラリを使用して既存の Excel ファイルを作成、開き、編集する方法を学びました。これらのテクニックを使用すると、Excel ファイルを Laravel アプリケーションに簡単に統合できるようになります。

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

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