PhpSpreadsheet 导出excel php7.4版本
//php7.4版本 可用,更高版本未测试
set_time_limit(0);
ini_set('memory_limit', '1024M');
// 实例化excel
include 'xxxxxx/autoload.php';
$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
// 获取当前活动的工作表
$sheet = $spreadsheet->getActiveSheet();
$sheet_name = '文件名称';
$fileName = '文件名称_'.date('Ymd_His');
$fileNameFull = iconv("utf-8", "gb2312", $fileName.'.xlsx');
$strs = str_split('ABCDEFGHIJKLMNOPQRSTUVWXYZ',1);
$sheet->setTitle( $sheet_name );
$keys = [];
$titles = [
'字段1',
'字段2',
'字段3',
'字段',
'字段5',
];
foreach ($titles as $k=>$vv){
$apped = ($k ) % 26 ;
$key = intval($k / 26) ;
$kk = '';
if($key > 0){
$kk .= $strs[$key - 1];
}
$kk .= $strs[$apped];
$keys[] = $kk;
}
foreach ($keys as $k=>$key){
$sheet->setCellValue($key.'1',$titles[$k]);
$sheet->getColumnDimension($key)->setAutoSize(true);
$cell = $sheet->getCell($key.'1',$titles[$k]);
$font = $cell->getStyle()->getFont();
$font->setName('宋体');
$font->setBold(true);
$font->setSize(10);
}
$o_data = [];//原始数据
$data = [];
foreach ($o_data as $vv){//加工数据
$data[] = [
$vv['xxxx'],
$vv['xxxx'],
$vv['xxxx'],
$vv['xxxx'],
$vv['xxxx'],
];
}
foreach ($data as $k=>$vv){
foreach ($keys as $k2=>$key){
$sheet->setCellValue($key.($k+2),$vv[$k2]);
$cell = $sheet->getCell($key.($k+2),$vv[$k2]);
$font = $cell->getStyle()->getFont();
$font->setName('宋体');
$font->setSize(10);
}
}
ob_clean();
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="'.$fileNameFull);
header('Cache-Control: max-age=0');
$writer =new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
$writer->save('php://output');
exit;
2025-05-22