隨著網路的發展,資料匯入和匯出的需求越來越多,尤其是在企業中。 Excel作為一種非常受歡迎的辦公室軟體,也被廣泛應用於資料的儲存和處理。因此,如何使用ThinkPHP6進行Excel的導入和導出已經成為了一個很重要的問題。本文將介紹使用ThinkPHP6進行Excel導入和匯出的步驟。
一、Excel匯出
ThinkPHP6提供了一個非常方便的Excel匯出工具類別-PHPExcel,使用PHPExcel可以將資料匯出為Excel文件,具體步驟如下:
1.安裝PHPExcel類別庫
在composer.json檔案中新增PHPExcel類別庫:
"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 <= $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(); } } }
<form method="post" action="admin/excel/import" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="上传"> </form>
$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; }
以上是怎麼使用ThinkPHP6進行Excel導入與導出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!