怎樣使用ThinkPHP6進行Excel導入和導出?

隨著互聯網的發展,數據導入和導出的需求越來越多,尤其是在企業中。excel作為一種非常流行的辦公軟件,也被廣泛應用于數據的存儲和處理。因此,怎樣使用thinkphp6進行excel的導入和導出已經成為了一個很重要的問題。本文將介紹使用thinkphp6進行excel導入和導出的步驟。

一、Excel導出

ThinkPHP6提供了一個非常方便的Excel導出工具類——PHPExcel,使用PHPExcel可以將數據導出為Excel文件,具體步驟如下:

1.安裝PHPExcel類庫

composer.json文件中添加PHPExcel類庫:

立即學習PHP免費學習筆記(深入)”;

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

執行命令安裝PHPExcel類庫:

composer install

2.創建Excel導出Controller

創建一個控制器類來處理Excel導出的請求:

namespace appdmincontroller;  use PhpOfficePhpSpreadsheetSpreadsheet; use PhpOfficePhpSpreadsheetWriterXlsx as Writer;  class Excel extends Base {     public function export()     {         // TODO: 導出Excel     } }

3.構造數據源

在導出Excel之前,需要先準備好要導出的數據源。通常有兩種方式來獲取數據源:

(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');     } }

二、Excel導入

使用ThinkPHP6處理Excel導入也非常方便,同樣使用PHPExcel類庫實現,具體步驟如下:

1.安裝PHPExcel類庫

同Excel導出的步驟一樣,需要先安裝PHPExcel類庫。

2.創建Excel導入Controller

創建一個控制器類來處理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 getCell($column . $row)->getValue();                     $rowData[] = $cellValue;                 }                 $data[] = $rowData;             }              unlink($filename);              dump($data);         } else {             echo $file->getError();         }     } }

3.上傳Excel文件

我們需要在視圖中添加一個上傳表單,來讓用戶上傳要導入的Excel文件。


?????? ??????

4.處理導入數據

在導入Excel之后,我們可以通過PHPExcel提供的API獲取到導入的數據。在上面的代碼中,我們使用了以下代碼來獲取數據:

$highestRow = $sheet->getHighestRow(); $highestColumn = $sheet->getHighestColumn();  $data = [];  for ($row = 2; $row getCell($column . $row)->getValue();         $rowData[] = $cellValue;     }     $data[] = $rowData; }

導入的數據即存儲在$data變量中,我們可以進行后續的數據處理操作,比如將數據插入到數據庫中。

綜上所述,使用ThinkPHP6進行Excel導入和導出相對來說比較簡單,通過使用PHPExcel類庫,我們可以很方便地實現Excel文件的讀取和導出。

? 版權聲明
THE END
喜歡就支持一下吧
點贊12 分享