在ThinkPHP5.1中使用PHPExcel
进行批量导入导出,可以通过以下示例代码来实现:
导入(Excel到数据库)
use PHPExcel_IOFactory;
// 导入Excel文件
public function import()
{
if ($this->request->isPost()) {
$file = $this->request->file('excel');
if ($file) {
$objPHPExcel = PHPExcel_IOFactory::load($file->getRealPath());
$sheet = $objPHPExcel->getSheet(0);
$data = $sheet->toArray(); // 转换为数组
// 去掉标题行
array_shift($data);
// 批量插入数据库
$model = new ModelName; // 你的模型
foreach ($data as $row) {
$model->data([
'column1' => $row[0],
'column2' => $row[1],
// ... 更多字段
])->save();
}
$this->success('导入成功');
} else {
$this->error('请选择上传文件');
}
}
return $this->fetch();
}
导出(数据库到Excel)
use PHPExcel;
use PHPExcel_IOFactory;
// 导出数据库数据到Excel
public function export()
{
$model = new ModelName; // 你的模型
$data = $model->select();
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', '列1标题')
->setCellValue('B1', '列2标题');
// ... 更多标题
$row = 2; // 从第二行开始插入数据
foreach ($data as $item) {
$objPHPExcel->getActiveSheet()
->setCellValue('A' . $row, $item['column1'])
->setCellValue('B' . $row, $item['column2']);
// ... 更多字段
$row++;
}
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$filename = 'export' . date('Y-m-d') . '.xlsx';
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $filename . '"');
header('Cache-Control: max-age=0');
$objWriter->save('php://output');
}
确保在操作导入导出时,已经正确安装并加载了PHPExcel
库。以上代码仅为示例,需要根据实际数据库模型和字段进行调整。