ThinkPHP 是一个流行的 PHP 开发框架,它提供了丰富的功能和组件,用于简化 Web 应用的开发过程。Excel 导入导出是指将 Excel 文件中的数据导入到数据库中,或者将数据库中的数据导出到 Excel 文件中。这在数据管理和分析中非常常见。
<?php
namespace app\index\controller;
use think\Controller;
use think\facade\Request;
use think\facade\Validate;
use PhpOffice\PhpSpreadsheet\IOFactory;
class ExcelController extends Controller
{
public function import()
{
$file = Request::file('file');
if (!$file) {
return json(['code' => 0, 'msg' => '请选择文件']);
}
$spreadsheet = IOFactory::load($file);
$sheetData = $spreadsheet->getActiveSheet()->toArray();
// 数据验证
$validate = Validate::make([
'data.*.name' => 'require',
'data.*.age' => 'require|integer',
]);
if (!$validate->check(['data' => $sheetData])) {
return json(['code' => 0, 'msg' => $validate->getError()]);
}
// 数据导入数据库
$model = model('User');
foreach ($sheetData as $data) {
$model->save($data);
}
return json(['code' => 1, 'msg' => '导入成功']);
}
}
<?php
namespace app\index\controller;
use think\Controller;
use think\facade\Db;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
class ExcelController extends Controller
{
public function export()
{
$data = Db::name('user')->select();
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', '姓名');
$sheet->setCellValue('B1', '年龄');
$row = 2;
foreach ($data as $item) {
$sheet->setCellValue('A' . $row, $item['name']);
$sheet->setCellValue('B' . $row, $item['age']);
$row++;
}
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="users.xlsx"');
header('Cache-Control: max-age=0');
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save('php://output');
}
}
ini_set('memory_limit', '2048M');
通过以上步骤和示例代码,可以实现 ThinkPHP 中的 Excel 导入导出功能,并解决常见的相关问题。
领取专属 10元无门槛券
手把手带您无忧上云