インターネットの発展に伴い、特に企業においてデータのインポートとエクスポートの需要が高まっています。 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 サイトの他の関連記事を参照してください。