内容列表
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
nginx添加反向代理
#PROXY-START/ location ~* \.(php|jsp|cgi|asp|aspx)$ { proxy_pass https://xxxx1.com; proxy_set_header Host xxxx1.com; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; } location / { proxy_pass https://xxxx1.com; proxy_set_header Host xxxx1.com; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; add_header X-Cache $upstream_cache_status; #Set Nginx Cache add_header Cache-Control no-cache; expires 12h; } #PROXY-END/ //$upstream_cache_status //HIT:表示请求的资源从 Nginx 的缓存中获取到了,即命中了缓存。这意味着 Nginx 没有将请求转发到后端服务器,而是直接从本地缓存中取出数据返回给客户端。 //MISS:表示请求的资源在 Nginx 的缓存中未找到,即缓存未命中。此时 Nginx 会将请求转发到后端服务器获取数据,然后将数据返回给客户端,同时可能会将数据缓存起来以便后续请求使用。 //EXPIRED:表示缓存中的资源已经过期。Nginx 仍然会将请求转发到后端服务器,获取最新的资源数据返回给客户端,并更新缓存(如果配置允许)。 //STALE:当 Nginx 配置了在后端服务器出现错误(如 error、timeout、invalid_header 以及特定的 HTTP 状态码如 http_500、http_502 等)时使用缓存中的旧数据进行响应,就可能出现 STALE 状态,表示返回的是缓存中的旧数据 。
2024-06-19