public function uploadExcel()
{
$this->request->filter(['trim', 'strip_tags']);
// !非POST请求
if (!$this->request->isPost()) return $this->error('请求方式不正确');
// 获取上传的文件
$file = request()->file('file');
// 判断文件是否上传成功
if ($file) {
// 上传文件并保存到指定目录
$info = $file->validate(['ext' => 'xlsx,xls'])->move(ROOT_PATH . 'public' . DS . 'uploads');
if ($info) {
// 获取上传文件的路径
$filePath = $info->getSaveName();
// 使用PhpSpreadsheet库的IOFactory类来创建一个Xlsx格式的读取器,然后使用该读取器加载Excel文件并读取文件内容
// 读取Excel文件内容
$reader = IOFactory::createReader('Xlsx');
$spreadsheet = $reader->load(ROOT_PATH . 'public' . DS . 'uploads' . DS . $filePath);
$sheetData = $spreadsheet->getActiveSheet()->toArray(null, true, true, true);
// 处理Excel文件内容并保存到数据库中
foreach ($sheetData as $key => $value) {
// 跳过表头
if ($key == 1) continue;
// 跳过空行
if (empty($value['A'])) continue;
// 获取题目、选项和答案
$title = $value['A'];
$optionA = $value['B'];
$optionB = $value['C'];
$result = $value['F'];
// 将数据保存到数据库中
db('question_bank')->insert([
'title' => $title,
'option_A' => $optionA,
'option_B' => $optionB,
'result' => $result,
]);
}
return $this->success('文件上传成功');
} else {
return $this->error('参数不能为空');
}
} else {
$this->error();
}
}