您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

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

2024/3/31 0:25:23发布29次查看
随着互联网的发展,数据导入和导出的需求越来越多,尤其是在企业中。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(); } }}
3.上传excel文件
我们需要在视图中添加一个上传表单,来让用户上传要导入的excel文件。
<form method="post" action="admin/excel/import"      enctype="multipart/form-data">      <input type="file" name="file">      <input type="submit" value="上传"></form>
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;}
导入的数据即存储在$data变量中,我们可以进行后续的数据处理操作,比如将数据插入到数据库中。
综上所述,使用thinkphp6进行excel导入和导出相对来说比较简单,通过使用phpexcel类库,我们可以很方便地实现excel文件的读取和导出。
以上就是怎样使用thinkphp6进行excel导入和导出?的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product