1. 简介
ThinkPHP是一款开源的PHP开发框架,拥有丰富的的功能和强大的扩展性。本文将介绍如何使用ThinkPHP6来实现Excel文件的导入和导出功能。
2. 导出Excel文件
2.1 准备工作
在开始之前,我们需要在ThinkPHP6的项目中安装PHPExcel库。可以通过Composer来管理项目的依赖,运行以下命令来安装PHPExcel:
composer require phpoffice/phpexcel
安装完成后,我们需要在项目的config目录下新建一个excel.php的配置文件,并添加以下内容:
return [
'template' => [
'cache_path' => '',
'base_path' => '',
],
'import' => [
'extend' => 'xls,xlsx',
'allow' => 'xls,xlsx',
],
];
配置文件中,我们指定了Excel模板文件的缓存路径和基本路径,以及允许导入和导出的Excel文件类型。
2.2 创建控制器
我们需要创建一个ExcelController来处理Excel文件的导入和导出操作。可以通过以下命令来生成控制器:
php think make:controller ExcelController
生成控制器后,在ExcelController中添加以下方法:
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
class ExcelController extends Controller
{
public function export()
{
$spreadsheet = new Spreadsheet();
// 添加数据到Excel中
// ...
$writer = new Xlsx($spreadsheet);
$filename = 'export_' . date('YmdHis') . '.xlsx';
$writer->save(public_path('exports/' . $filename));
return '文件导出成功:' . $filename;
}
}
在export方法中,我们首先创建了一个新的Spreadsheet对象作为Excel文件的容器。然后,我们可以通过添加数据到$spreadsheet对象中,来生成Excel文件。最后,使用Xlsx Writer将$spreadsheet写入到文件中,并保存在public目录下的exports文件夹中。
2.3 创建路由
在routes目录下的route.php文件中添加以下路由:
use app\controller\ExcelController;
// 导出Excel文件
Route::get('excel/export', [ExcelController::class, 'export']);
通过上述路由,我们可以通过访问/excel/export来导出Excel文件。
3. 导入Excel文件
3.1 准备工作
要实现Excel文件的导入功能,我们还需要安装phpoffice/phpspreadsheet库。运行以下命令来安装库:
composer require phpoffice/phpspreadsheet
安装完成后,我们需要在config目录下的excel.php配置文件中,添加如下配置项:
return [
// ...
'import' => [
// ...
'limit' => 5000,
'column_limit' => 'A',
],
];
在配置文件中,我们指定了每次导入的最大行数(limit)和最大列数(column_limit)。
3.2 创建控制器方法
在ExcelController中添加以下导入方法:
use PhpOffice\PhpSpreadsheet\IOFactory;
class ExcelController extends Controller
{
public function import(Request $request)
{
$file = $request->file('file');
$filename = $file->getRealPath();
$spreadsheet = IOFactory::load($filename);
$worksheet = $spreadsheet->getActiveSheet();
$highestRow = $worksheet->getHighestRow();
$highestColumn = $worksheet->getHighestColumn();
// 处理导入的数据
// ...
return '文件导入成功';
}
}
在import方法中,我们首先获取上传的Excel文件,并获取其真实路径。然后,使用IOFactory加载Excel文件,并获取当前活动的工作表。通过getHighestRow和getHighestColumn方法,我们可以获取Excel文件的最高行数和最高列数。接下来,你可以根据需求对导入的数据进行处理。
3.3 创建路由
在route.php文件中添加以下路由:
use app\controller\ExcelController;
// 导入Excel文件
Route::post('excel/import', [ExcelController::class, 'import']);
通过上述路由,我们可以通过发送POST请求到/excel/import来导入Excel文件。
4. 结束语
本文介绍了如何使用ThinkPHP6来实现Excel文件的导入和导出功能。通过阅读本文,您学会了如何准备工作、创建控制器、配置路由,并实现了导入和导出Excel文件的代码。希望本文能够对您有所帮助!