怎样使用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接口中获取。

壁纸样机神器 壁纸样机神器

免费壁纸样机生成

壁纸样机神器 0 查看详情 壁纸样机神器

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 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 <= $highestRow; $row++) {    $rowData = [];    for ($column = 'A'; $column getCell($column . $row)->getValue();        $rowData[] = $cellValue;    }    $data[] = $rowData;}

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

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

以上就是怎样使用ThinkPHP6进行Excel导入和导出?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/304648.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月5日 02:32:25
下一篇 2025年11月5日 02:32:41

相关推荐

发表回复

登录后才能评论
关注微信