環(huán)境:
PHP8.2
phpoffice/phpspreadsheet:2.0
這里寫問題具體描述
代碼如下:
/**
@param string $name 下載Excel的文件名,可忽略
*/
public static function downloadExcel(array $arr,array $data,$name=""){
//文件名處置
try {
if (empty($name)){
$name = date("YmdHis");
}
//內(nèi)容設(shè)置
$preadsheet = new Spreadsheet();
$sheet = $preadsheet->getActiveSheet();
foreach($arr as $k=>$v){
$sheet->setCellValue($k,$v);
}
$sheet->fromArray($data,null,"A2");
//樣式設(shè)置
$sheet->getDefaultColumnDimension()->setWidth(12);
//設(shè)置下載與后綴
$suffix = "xlsx";
$filename = $name.".".$suffix;
$writer = new Xlsx($preadsheet);
$response = response();
ob_start();
try {
$writer->save('php://output');
$c = ob_get_contents();
$response->withHeaders([
'Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
'Content-Disposition' => 'attachment;filename="'.$filename,
'Cache-Control' => 'max-age=0',
])->withBody($c);
} catch (\Throwable $e){
Log::error("生成文檔出錯(cuò),錯(cuò)誤信息:".$e->getMessage());
// var_dump("生成文檔出錯(cuò),錯(cuò)誤信息:".$e->getMessage());
} finally {
ob_end_clean();
}
return $response;
} catch (\Throwable $e){
Log::error("生成文檔出錯(cuò),錯(cuò)誤信息:".$e->getMessage());
}
}