怎样使用ThinkPHP6进行Excel导入和导出?

王林
Lepaskan: 2023-06-12 09:23:13
asal
1788 orang telah melayarinya

随着互联网的发展,数据导入和导出的需求越来越多,尤其是在企业中。Excel作为一种非常流行的办公软件,也被广泛应用于数据的存储和处理。因此,怎样使用ThinkPHP6进行Excel的导入和导出已经成为了一个很重要的问题。本文将介绍使用ThinkPHP6进行Excel导入和导出的步骤。

一、Excel导出

ThinkPHP6提供了一个非常方便的Excel导出工具类——PHPExcel,使用PHPExcel可以将数据导出为Excel文件,具体步骤如下:

1.安装PHPExcel类库

在composer.json文件中添加PHPExcel类库:

"require": { "phpoffice/phpexcel": "^1.8" },
Salin selepas log masuk

执行命令安装PHPExcel类库:

composer install
Salin selepas log masuk

2.创建Excel导出Controller

创建一个控制器类来处理Excel导出的请求:

namespace appdmincontroller; use PhpOfficePhpSpreadsheetSpreadsheet; use PhpOfficePhpSpreadsheetWriterXlsx as Writer; class Excel extends Base { public function export() { // TODO: 导出Excel } }
Salin selepas log masuk

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'); } }
Salin selepas log masuk

(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'); } }
Salin selepas log masuk

二、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(); } } }
Salin selepas log masuk

3.上传Excel文件

我们需要在视图中添加一个上传表单,来让用户上传要导入的Excel文件。

Salin selepas log masuk

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; }
Salin selepas log masuk

导入的数据即存储在$data变量中,我们可以进行后续的数据处理操作,比如将数据插入到数据库中。

综上所述,使用ThinkPHP6进行Excel导入和导出相对来说比较简单,通过使用PHPExcel类库,我们可以很方便地实现Excel文件的读取和导出。

Atas ialah kandungan terperinci 怎样使用ThinkPHP6进行Excel导入和导出?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!