废话不多说,直接上代码
public function export1()
{
$data = [
[
'id' => 1,
'username' => 1,
'thumb' => 'F:\phpstudy\phpstudy_pro\WWW\education\public\uploads\image\1.jpg',
'content' => 1,
'create_time' => 1,
],
[
'id' => 2,
'username' => 1,
'thumb' => 'F:\phpstudy\phpstudy_pro\WWW\education\public\uploads\image\1.jpg',
'content' => 1,
'create_time' => 1,
],
];
$newExcel = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
$objSheet = $newExcel->getActiveSheet();
$objSheet->setTitle('意见反馈');
$newExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);
$newExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
$newExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);
$newExcel->getActiveSheet()->getColumnDimension('D')->setWidth(40);
$newExcel->getActiveSheet()->getColumnDimension('E')->setWidth(30);
$objSheet->setCellValue('A1', 'ID')
->setCellValue('B1', '用户')
->setCellValue('C1', '图片')
->setCellValue('D1', '内容')
->setCellValue('E1', '时间');
if (!empty($data)) {
foreach ($data as $key => $val) {
$key = $key + 2;
$newExcel->getActiveSheet()->getRowDimension($key)->setRowHeight(65);
$objSheet->setCellValue('A' . $key, $val['id'])
->setCellValue('B' . $key, $val['username'])
->setCellValue('D' . $key, $val['content'])
->setCellValue('E' . $key, $val['create_time']);
if (!empty($val['thumb'])) {
$thumb = str_replace(request()->domain(), '.', $val['thumb']);
$drawing[$key] = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing();
$drawing[$key]->setName('图片');
$drawing[$key]->setDescription('图片');
$drawing[$key]->setPath($thumb);
$drawing[$key]->setWidth(80);
$drawing[$key]->setHeight(80);
$drawing[$key]->setCoordinates('C'.$key);
$drawing[$key]->setOffsetX(0);
$drawing[$key]->setOffsetY(0);
$drawing[$key]->setWorksheet($newExcel->getActiveSheet());
} else {
$objSheet->setCellValue('C' . $key, '');
}
}
} else {
$this->error('暂无数据');
}
$filename = '意见反馈';
$format = 'Xlsx';
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header("Content-Disposition: attachment;filename=" . $filename . date('Y-m-d') . '.' . strtolower($format));
header('Cache-Control: max-age=0');
$objWriter = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($newExcel, $format);
return $objWriter->save('php://output');
exit;
}
完成,就是这么简单
这个方法我是实操过可行的,但是会发现有个明显的问题,如果是网络图片路径,还需要先将图片保存到本地再进行导出,比较麻烦。我就了解了这一种,不知道是不是你们有没有其他更加方便的方法,如果有的话欢迎私信或者评论告诉我哦!
如果您觉得本篇对你有帮助,可以点关注,给个赞,支持一下,过程有遇到什么问题也欢迎评论私信,进行交流
|