ホームページ  >  記事  >  PHPフレームワーク  >  ThinkPHP6 を使用して Excel をインポートおよびエクスポートするにはどうすればよいですか?

ThinkPHP6 を使用して Excel をインポートおよびエクスポートするにはどうすればよいですか?

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

インターネットの発展に伴い、特に企業においてデータのインポートとエクスポートの需要が高まっています。 Excel は非常に人気のあるオフィス ソフトウェアとして、データの保存と処理にも広く使用されています。したがって、ThinkPHP6 を使用して Excel をインポートおよびエクスポートする方法が非常に重要な問題になります。この記事では、ThinkPHP6を使用してExcelのインポートとエクスポートを行う手順を紹介します。

1. Excel エクスポート

ThinkPHP6 は、非常に便利な Excel エクスポート ツール クラス PHPExcel を提供します。PHPExcel を使用して、データを Excel ファイルにエクスポートできます。具体的な手順は次のとおりです:

1. PHPExcel クラス ライブラリをインストールします

PHPExcel クラス ライブラリをcomposer.json ファイルに追加します:

"require": {
    "phpoffice/phpexcel": "^1.8"
},

コマンドを実行して、PHPExcel クラス ライブラリをインストールします:

composer install

2. Excel エクスポート コントローラーを作成する

Excel エクスポート リクエストを処理するコントローラー クラスを作成します:

namespace appdmincontroller;

use PhpOfficePhpSpreadsheetSpreadsheet;
use PhpOfficePhpSpreadsheetWriterXlsx as Writer;

class Excel extends Base
{
    public function export()
    {
        // TODO: 导出Excel
    }
}

3. データ ソースを構築します

Excel をエクスポートする前に、次のことを行う必要があります。エクスポート元のデータを準備します。通常、データ ソースを取得するには 2 つの方法があります。

(1) データベースからデータを取得する

namespace appdmincontroller;

use appdminmodelUser as UserModel;
use PhpOfficePhpSpreadsheetSpreadsheet;
use PhpOfficePhpSpreadsheetWriterXlsx as Writer;

class Excel extends Base
{
    public function export()
    {
        $users = UserModel::select()->toArray();

        $spreadsheet = new Spreadsheet();

        $sheet = $spreadsheet->getActiveSheet();
        $sheet->setCellValue('A1', 'ID');
        $sheet->setCellValue('B1', '姓名');
        $sheet->setCellValue('C1', '性别');
        $sheet->setCellValue('D1', '年龄');

        $row = 2;
        foreach ($users as $user) {
            $sheet->setCellValue('A' . $row, $user['id']);
            $sheet->setCellValue('B' . $row, $user['name']);
            $sheet->setCellValue('C' . $row, $user['gender']);
            $sheet->setCellValue('D' . $row, $user['age']);
            $row++;
        }

        $writer = new Writer($spreadsheet);
        $writer->save('users.xlsx');
    }
}

(2) 他のデータ ソースからデータを取得する

一部のデータは Excel ファイルにエクスポートされますが、これらのデータはデータベースには保存されません。たとえば、注文情報を Excel 形式でエクスポートしたい場合などです。現時点では、ネットワーク API インターフェイスから取得するなど、他の方法でこのデータを取得できます。

namespace appdmincontroller;

use GuzzleHttpClient;
use PhpOfficePhpSpreadsheetSpreadsheet;
use PhpOfficePhpSpreadsheetWriterXlsx as Writer;

class Excel extends Base
{
    public function export()
    {
        $client = new Client();

        $response = $client->get('https://api.example.com/orders');

        $orders = json_decode($response->getBody()->getContents(), true);

        $spreadsheet = new Spreadsheet();

        $sheet = $spreadsheet->getActiveSheet();
        $sheet->setCellValue('A1', '订单编号');
        $sheet->setCellValue('B1', '下单人');
        $sheet->setCellValue('C1', '订单金额');

        $row = 2;
        foreach ($orders as $order) {
            $sheet->setCellValue('A' . $row, $order['id']);
            $sheet->setCellValue('B' . $row, $order['user']);
            $sheet->setCellValue('C' . $row, $order['amount']);
            $row++;
        }

        $writer = new Writer($spreadsheet);
        $writer->save('orders.xlsx');
    }
}

2. Excel インポート

Excel インポートの処理には ThinkPHP6 を使用するのも非常に便利です。これも PHPExcel クラス ライブラリを使用して実装されます。具体的な手順は次のとおりです:

1. PHPExcel クラス ライブラリをインストールします

Excel エクスポートの手順と同様に、最初に PHPExcel クラス ライブラリをインストールする必要があります。

2. Excel インポート コントローラーの作成

Excel インポート リクエストを処理するコントローラー クラスを作成します:

namespace appdmincontroller;

use PhpOfficePhpSpreadsheetIOFactory;

class Excel extends Base
{
    public function import()
    {
        $file = request()->file('file');

        $info = $file->validate(['ext' => 'xlsx'])->move('uploads');

        if ($info) {
            $filename = 'uploads/' . $info->getSaveName();

            $reader = IOFactory::createReader('Xlsx');
            $spreadsheet = $reader->load($filename);

            $sheet = $spreadsheet->getActiveSheet();
            $highestRow = $sheet->getHighestRow();
            $highestColumn = $sheet->getHighestColumn();

            $data = [];

            for ($row = 2; $row <= $highestRow; $row++) {
                $rowData = [];
                for ($column = 'A'; $column <= $highestColumn; $column++) {
                    $cellValue = $sheet->getCell($column . $row)->getValue();
                    $rowData[] = $cellValue;
                }
                $data[] = $rowData;
            }

            unlink($filename);

            dump($data);
        } else {
            echo $file->getError();
        }
    }
}

3. Excel ファイルをアップロード

フォームをビューにアップロードして、ユーザーがインポートする Excel ファイルをアップロードできるようにします。

<form method="post" action="admin/excel/import"
      enctype="multipart/form-data">
      <input type="file" name="file">
      <input type="submit" value="上传">
</form>

4. インポートされたデータの処理

Excel をインポートした後、PHPExcel が提供する API を介してインポートされたデータを取得できます。上記のコードでは、次のコードを使用してデータを取得します:

$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();

$data = [];

for ($row = 2; $row <= $highestRow; $row++) {
    $rowData = [];
    for ($column = 'A'; $column <= $highestColumn; $column++) {
        $cellValue = $sheet->getCell($column . $row)->getValue();
        $rowData[] = $cellValue;
    }
    $data[] = $rowData;
}

インポートされたデータは $data 変数に保存され、データベースへのデータの挿入などの後続のデータ処理操作を実行できます。

要約すると、ThinkPHP6 を使用した Excel のインポートとエクスポートは比較的簡単で、PHPExcel クラス ライブラリを使用することで、Excel ファイルの読み取りとエクスポートを簡単に行うことができます。

以上がThinkPHP6 を使用して Excel をインポートおよびエクスポートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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