'; echo ''; echo ''; foreach ($export_data as $row) { echo ''; foreach ($row as $cell) { echo ''; } echo ''; } echo '
' . htmlspecialchars($cell) . '
'; exit; } catch (Exception $e) { die('엑셀 파일 생성 중 오류가 발생했습니다. 오류: ' . htmlspecialchars($e->getMessage())); } } // 방법 2: CSV를 XLS로 저장하는 방식 elseif ($method === 'csv_as_xls') { while (ob_get_level()) { ob_end_clean(); } try { $filename = 'survey_' . $sv_id . '_' . date('Y-m-d') . '_csv.xls'; header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment; filename="' . $filename . '"'); header('Cache-Control: max-age=0'); foreach ($export_data as $row) { echo implode("\t", $row) . "\n"; } exit; } catch (Exception $e) { die('엑셀 파일 생성 중 오류가 발생했습니다. 오류: ' . htmlspecialchars($e->getMessage())); } } // 방법 3: 기존 PHPExcel 방식 (문제가 있는 방식) elseif ($method === 'phpexcel') { if (!file_exists(G5_LIB_PATH . '/PHPExcel.php')) { die('PHPExcel 라이브러리가 없습니다.'); } include_once(G5_LIB_PATH . '/PHPExcel.php'); try { while (ob_get_level()) { ob_end_clean(); } @ini_set('memory_limit', '256M'); @set_time_limit(300); $objPHPExcel = new PHPExcel(); $objPHPExcel->setActiveSheetIndex(0)->fromArray($export_data, null, 'A1'); $sheet = $objPHPExcel->getActiveSheet(); foreach (range('A', $sheet->getHighestDataColumn()) as $col) { $sheet->getColumnDimension($col)->setAutoSize(true); } header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment; filename="survey_' . $sv_id . '_' . date('Y-m-d') . '_phpexcel.xlsx"'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save('php://output'); exit; } catch (Exception $e) { die('PHPExcel 오류: ' . htmlspecialchars($e->getMessage())); } } // 방법 4: 순수 CSV 다운로드 elseif ($method === 'csv') { while (ob_get_level()) { ob_end_clean(); } header('Content-Type: text/csv; charset=utf-8'); header('Content-Disposition: attachment; filename="survey_' . $sv_id . '_' . date('Y-m-d') . '.csv"'); header('Cache-Control: max-age=0'); $output = fopen('php://output', 'w'); fprintf($output, chr(0xEF) . chr(0xBB) . chr(0xBF)); // UTF-8 BOM foreach ($export_data as $row) { fputcsv($output, $row); } fclose($output); exit; } } } $g5['title'] = '엑셀 내보내기 테스트'; include_once(G5_ADMIN_PATH . '/admin.head.php'); // 설문 목록 가져오기 $survey_list = array(); $survey_sql = "SELECT sv_id, sv_title, sv_created_at, (SELECT COUNT(*) FROM survey_responses WHERE sv_id = sm.sv_id AND sr_status = 'completed') as response_count FROM survey_master sm ORDER BY sv_created_at DESC"; $survey_result = sql_query($survey_sql); while ($survey_row = sql_fetch_array($survey_result)) { $survey_list[] = $survey_row; } ?>

엑셀 내보내기 테스트

다양한 방법으로 엑셀 파일을 생성해서 어떤 방법이 문제없이 작동하는지 테스트합니다

방법 1: HTML 테이블
HTML 테이블을 엑셀 형식으로 출력하는 방식 (현재 수정된 방식)
방법 2: CSV를 XLS로
CSV 데이터를 XLS 확장자로 저장하는 방식
방법 3: PHPExcel
기존 PHPExcel 라이브러리를 사용하는 방식 (문제가 있는 방식)
방법 4: 순수 CSV
표준 CSV 형식으로 다운로드
ID 설문 제목 응답 수 생성일 테스트 다운로드
0): ?> HTML CSV→XLS PHPExcel CSV 응답 없음

등록된 설문이 없습니다

설문을 먼저 생성해주세요.

테스트 방법 설명

권장: 각 방법을 테스트해보고 정상적으로 다운로드되고 열리는 방법을 확인하세요.