随着互联网的发展,数据导入和导出的需求越来越多,尤其是在企业中。Excel作为一种非常流行的办公软件,也被广泛应用于数据的存储和处理。因此,怎样使用ThinkPHP6进行Excel的导入和导出已经成为了一个很重要的问题。本文将介绍使用ThinkPHP6进行Excel导入和导出的步骤。 一、Excel导出 ThinkPHP6提供了一个非常方便的Excel导出工具类——PHPExcel,使用PHPExcel可以将数据导出为Excel文件,具体步骤如下: 1.安装PHPExcel类库 在composer.json文件中添加PHPExcel类库: "require": {
"phpoffice/phpexcel": "^1.8"
}, 登录后复制 执行命令安装PHPExcel类库: 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导入和导出?的详细内容,更多请关注模板之家(www.mb5.com.cn)其它相关文章! |