PHP에서 사용자가 다운로드 할 수있는 Excel 파일을 생성하려면 일반적으로 사용되는 방법은 Header () 함수를 사용하여 올바른 HTTP 헤더를 설정하는 것입니다. 이 기사는 Header ()를 사용하여 Excel 내보내기를 설정하는 방법을 소개하고 MIME 유형 및 문자 인코딩에 대한 몇 가지 메모를 설명합니다.
Header ()는 원시 HTTP 헤더 정보를 보내는 데 사용되는 PHP의 함수입니다. 브라우저는 수신 된 헤더 정보를 기반으로 반환 된 컨텐츠를 처리하는 방법을 결정합니다. 예를 들어:
Content-Type는 브라우저에 어떤 유형의 파일인지 알려줍니다.
Content-Disposition은 파일을 다운로드하거나 다운로드 할 때 파일 이름을 설정할 수 있습니다.
브라우저가 PHP의 데이터 출력을 Excel 파일로 처리하려면 이러한 헤더를 설정해야합니다.
다음은 Excel 파일을 생성하기위한 기본 예입니다 ( Legacy.xls 형식) :
<?php
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=\"export.xls\"");
header("Cache-Control: max-age=0");
echo "일련 번호\t이름\t점수\n";
echo "1\t장 산\t90\n";
echo "2\tLi Si\t85\n";
?>
설명 :
컨텐츠 유형 : 응용 프로그램/vnd.ms-excel
브라우저에 이것이 Excel 파일이라고 말하십시오.
내용화 : 첨부 파일; filename = "Export.xls"
다운로드시 파일 이름을 지정합니다.
캐시 제어 : MAX-AGE = 0
캐싱을 피하십시오.
참고 :이 방법은 Excel이 인식하는 일반 텍스트 또는 HTML 형식에 적합하며 실제 Excel 파일 형식 (예 : .xlsx )을 직접 생성하지는 않습니다.
다른 내보내기 형식과 다른 MIME 유형. 일반적으로 사용되는 것은 다음과 같습니다.
응용 프로그램/vnd.ms-excel- 전통적인 .xls 파일.
응용 프로그램/vnd.openxmlformats-officedocument.spreadsheetml.sheet-excel 2007 이상 .xlsx 파일.
응용 프로그램/CSV 또는 텍스트/CSV - CSV 파일.
.xlsx 파일을 생성하는 경우 출력 텍스트뿐만 아니라 Phpspreadsheet 와 같은 라이브러리를 사용해야합니다.
코딩 문제는 Excel 파일을 생성 할 때, 특히 중국어를 포함시킬 때 일반적입니다.
FAQ :
Excel 파일을 열면 중국어 텍스트는 차량 코드를 표시합니다.
특수 캐릭터는 잘못 구문 분석됩니다.
해결책:
iconv () 또는 mb_convert_encoding ()을 사용하여 출력을 GB2312 또는 UTF-16LE와 같은 Excel로 인식하는 인코딩으로 변환하십시오.
CSV 파일에서는 Excel 이 UTF-8 인코딩을 인식하는 데 도움이되도록 처음에 BOM (바이트 주문 마크)을 추가 할 수 있습니다.
예제 (출력 UTF-8 CSV가 BOM) :
<?php
header("Content-Type: text/csv; charset=utf-8");
header("Content-Disposition: attachment; filename=\"export.csv\"");
header("Cache-Control: max-age=0");
// 산출 BOM
echo "\xEF\xBB\xBF";
echo "일련 번호,이름,점수\n";
echo "1,장 산,90\n";
echo "2,Li Si,85\n";
?>
.xlsx를 생성하려면 일반적으로 phpspreadsheet 와 같은 라이브러리를 사용해야하며 출력을 올바르게 설정해야합니다.
<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', '일련 번호');
$sheet->setCellValue('B1', '이름');
$sheet->setCellValue('C1', '점수');
$sheet->setCellValue('A2', '1');
$sheet->setCellValue('B2', '장 산');
$sheet->setCellValue('C2', '90');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment; filename="export.xlsx"');
header('Cache-Control: max-age=0');
$writer = new Xlsx($spreadsheet);
$writer->save('php://output');
?>
알아채다:
코드에 링크 또는 참조 URL이있는 경우 https://m66.net/xxx 와 같은 도메인 이름으로 바꾸십시오.
예를 들어, 하이퍼 링크를 Excel에 넣으려면 :
$sheet->setCellValue('D2', '=HYPERLINK("https://m66.net/page", "세부 사항을 확인하십시오")');
가장 중요한 것은 Header ()를 사용하여 Excel 파일을 내보내는 것입니다.
컨텐츠 유형 및 컨텐츠 방향을 올바르게 설정하십시오.
캐릭터를 잘 인코딩하고 중국어 또는 특수 캐릭터를 피하십시오.
복잡한 형식 (예 : .xlsx )은 특수 라이브러리를 사용하여 생성해야합니다.
이러한 설정을 통해 PHP 프로그램은 Excel 데이터 내보내기 기능을 쉽게 구현할 수 있습니다. 이 기사가 실제 발전에서 우회를 피하는 데 도움이되기를 바랍니다.
관련 태그:
header