如何使用ThinkPHP6实现Excel导入导出

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文件的代码。希望本文能够对您有所帮助!

后端开发标签