ThinkPHP6 データのインポートとエクスポート: データのバッチ処理の実現
実際の開発では、Excel のインポートなど、データをバッチでインポートおよびエクスポートする必要があることがよくあります。テーブルをデータベースにエクスポートするか、データベース内のデータを Excel ファイルにエクスポートします。このような運用により、開発効率が向上し、手入力の負担が軽減されます。この記事では、ThinkPHP6 フレームワークを使用してデータのバッチ処理を実装する方法を紹介します。これには、データのインポートとエクスポートの具体的な手順とコード例が含まれます。
1. データインポート
まず、Excel ファイルを処理するためにプロジェクトに PHPExcel ライブラリをインストールする必要があります。 Composer を使用して PHPExcel をインストールし、次のコマンドを実行できます。
composer require phpoffice/phpexcel
インストールが完了すると、PHPExcel ライブラリの関連ファイルを含むベンダー ディレクトリが生成されます。
ThinkPHP6 では、request()
関数を使用して、ユーザーがアップロードしたファイルを取得できます。まず、コントローラーでインポート操作を処理するメソッドを作成します。
public function import() { // 获取上传的文件 $file = request()->file('file'); // 移动到框架应用根目录/uploads/目录下 $info = $file->validate(['size' => 1048576, 'ext' => 'xls,xlsx'])->move(ROOT_PATH . 'uploads/'); if ($info) { // 获取上传文件的路径 $filename = $info->getSaveName(); // 处理Excel导入逻辑 // ... // 返回成功信息 return '数据导入成功!'; } else { // 返回错误信息 return $file->getError(); } }
上記のコードでは、まず、アップロードされたファイルが request()
関数を通じて取得され、有効性が検証されます。 . 、ファイル サイズは 1 MB に制限され、.xls および .xlsx 形式のファイルのみのアップロードが許可されます。次に、move()
メソッドを使用してファイルをフレームワークのアップロード ディレクトリに移動し、ファイル名を $filename
変数に保存します。
次に、インポート ロジックで PHPExcel ライブラリを使用して、Excel ファイルを読み取り、処理できます。以下は簡単な例です。
public function import() { // ... // 创建PHPExcel对象 $excel = new PHPExcel(); // 读取Excel文件 $reader = PHPExcel_IOFactory::createReader('Excel2007'); $PHPExcel = $reader->load(ROOT_PATH . 'uploads/' . $filename); // 获取第一个工作表 $sheet = $PHPExcel->getSheet(0); // 获取总行数 $totalRow = $sheet->getHighestRow(); // 遍历每一行数据 for ($i = 2; $i <= $totalRow; $i++) { // 获取单元格数据 $name = $sheet->getCell('A' . $i)->getValue(); $age = $sheet->getCell('B' . $i)->getValue(); // 处理数据插入操作 // ... } // ... }
上記のコードでは、PHPExcel ライブラリを使用して PHPExcel オブジェクトを作成し、createReader()
メソッドを使用して Excel ファイルを読み取ります。次に、getSheet()
メソッドを使用して最初のワークシートのオブジェクトを取得し、getHighestRow()
メソッドを使用して合計行数を取得します。
次に、各行のデータを走査して、getCell()
メソッドを使用して指定したセルの値を取得し、そのデータをデータベースに挿入してインポート操作を完了します。
2. データのエクスポート
最初に、エクスポート操作を処理するメソッドをコントローラーに作成します:
public function export() { // 查询数据库数据 $data = Db::name('user')->select(); // 处理Excel导出逻辑 // ... }
上記のコードでは、ThinkPHP6Db::name('user')->select()
のクエリ コンストラクターを使用して、データベース内のユーザー データをクエリします。
次に、PHPExcel ライブラリを使用してデータを Excel ファイルにエクスポートします。
public function export() { // ... // 创建PHPExcel对象 $excel = new PHPExcel(); // 设置工作表标题 $excel->getActiveSheet()->setTitle('用户数据'); // 设置表头 $excel->getActiveSheet()->setCellValue('A1', 'ID'); $excel->getActiveSheet()->setCellValue('B1', '姓名'); $excel->getActiveSheet()->setCellValue('C1', '年龄'); // 设置数据内容 $row = 2; foreach($data as $item) { $excel->getActiveSheet()->setCellValue('A' . $row, $item['id']); $excel->getActiveSheet()->setCellValue('B' . $row, $item['name']); $excel->getActiveSheet()->setCellValue('C' . $row, $item['age']); $row++; } // 导出Excel文件 header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="user_data.xlsx"'); header('Cache-Control: max-age=0'); $writer = PHPExcel_IOFactory::createWriter($excel, 'Excel2007'); $writer->save('php://output'); }
上記のコードでは、 PHPExcel オブジェクトを作成し、setTitle()
メソッドを使用してワークシートのタイトルを設定します。次に、setCellValue()
メソッドを使用して、ヘッダーとデータの内容を設定します。
最後に、応答ヘッダーを設定して、エクスポートした Excel ファイルをブラウザに送信してダウンロードします。
概要
この記事では、ThinkPHP6 フレームワークを使用してデータのバッチ処理を実装する方法を紹介します。これには、データのインポートとエクスポートの具体的な手順とコード例が含まれます。 PHPExcelライブラリを利用することで、Excelファイルを簡単に加工することができ、開発効率の向上や手入力の負担を軽減できます。この記事があなたのお役に立ち、実際の開発に役立つことを願っています。
以上がThinkPHP6 データのインポートとエクスポート: データのバッチ処理を実現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。