安装 phpoffice/phpspreadsheet 库
composer require phpoffice/phpspreadsheet
导入功能
创建一个用于上传文件的视图,可以使用元素来实现文件上传。
<!-- application/view/your/import.html -->
<form action="{:url('your/import')}" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<button type="submit">导入</button>
</form>
导入逻辑
// application/controller/YourController.php
namespace app\controller;
use PhpOffice\PhpSpreadsheet\IOFactory;
class YourController
{
public function import()
{
if ($this->request->isPost()) {
$file = $this->request->file('file');
// 检查文件是否上传成功
if ($file) {
// 获取上传文件的临时路径
$filePath = $file->getRealPath();
// 读取 Excel 文件
$spreadsheet = IOFactory::load($filePath);
// 处理 Excel 数据
// 例如:遍历行和列,保存到数据库
} else {
// 文件上传失败
return '文件上传失败';
}
}
return $this->fetch('your/import');
}
}
导出功能
// application/controller/YourController.php
namespace app\controller;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
class YourController
{
public function export()
{
// 创建新的 Excel 对象
$spreadsheet = new Spreadsheet();
// 在这里添加数据到 Excel
// 保存 Excel 文件
$writer = new Xlsx($spreadsheet);
$filename = 'exported_data.xlsx';
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $filename . '"');
header('Cache-Control: max-age=0');
$writer->save('php://output');
}
}
在路由中配置
// application/route/route.php
use think\facade\Route;
Route::get('your/import', 'YourController/import');
Route::post('your/import', 'YourController/import');
Route::get('your/export', 'YourController/export');
访问页面
最后,通过访问相应的页面来上传文件进行导入或者点击导出按钮进行导出。
请注意,以上代码中的路径和命名空间需要根据你的项目实际情况进行调整。希望这个详细的步骤对你有帮助。