>백엔드 개발 >PHP 문제 >PHP는 Excel의 모든 곳에서 깨졌습니다.

PHP는 Excel의 모든 곳에서 깨졌습니다.

WBOY
WBOY원래의
2023-05-07 12:43:08843검색

PHP는 웹 개발에 널리 사용되는 스크립팅 언어입니다. 특별한 유연성과 조작성을 가지고 있지만 Excel 파일을 내보낼 때 문자가 깨지는 등의 몇 가지 일반적인 문제는 개발자에게 많은 불편을 초래합니다. 따라서 이 글에서는 이 문제를 자세히 살펴보고 이 번거로운 문제를 쉽게 해결할 수 있도록 몇 가지 솔루션을 제공하겠습니다.

  1. Excel 파일이 인코딩되는 방식을 이해하세요

Excel 파일은 HTML이나 JSON과 같은 텍스트가 아닌 바이너리 형식으로 저장됩니다. 따라서 Excel 파일을 읽고 쓸 때 인코딩 방법에 특별한 주의가 필요합니다. 가장 일반적인 인코딩은 UTF-8 및 GBK입니다.

UTF-8은 현재 가장 일반적으로 사용되는 인코딩 방법으로 여러 언어와 문자 집합을 지원하며 특히 국제 응용 프로그램에 적합합니다. GBK는 문자 세트에 중국어 간체 및 중국어 번체 문자만 포함된 중국어 인코딩 방법입니다.

  1. PHP 및 Excel 파일의 인코딩 방법 설정

PHP를 사용하여 Excel 파일을 내보낼 때 스크립트 파일과 Excel 파일이 모두 동일한 인코딩 방법을 사용하는지 확인해야 합니다. PHP 내장 함수 mb_convert_encoding()을 사용하여 콘텐츠를 한 인코딩에서 다른 인코딩으로 변환할 수 있습니다.

예를 들어, PHP에서 UTF-8 인코딩을 사용하고 Excel 파일에서 GBK 인코딩을 사용하는 경우 콘텐츠를 GBK 인코딩으로 변환할 수 있습니다.

$data = "중국어 콘텐츠";
$data = mb_convert_encoding($ data, "GBK", "UTF-8");

PHPExcel 라이브러리의 setCellValueExplicit() 메서드를 사용하여 Excel 셀의 텍스트를 지정된 인코딩으로 설정할 수도 있습니다:

$objPHPExcel->getActiveSheet( )- >setCellValueExplicit('A1', '중국어 콘텐츠', PHPExcel_Cell_DataType::TYPE_STRING,'GBK');

  1. 인코딩을 설정하려면 올바른 HTTP 헤더를 사용하세요.

Excel 파일을 브라우저에 출력할 때 필요합니다. 인코딩을 설정하려면 HTTP 헤더를 수정하세요. 다음을 추가하여 브라우저가 UTF-8 인코딩을 사용하도록 할 수 있습니다:

header('Content-Type: application/vnd.ms-excel; charset=utf-8');
header('Content-Disposition: attachment; filename="example.xls"');
header('Cache-Control: max-age=0');

  1. 지원되지 않는 문자 사용을 피하세요

Excel 파일의 이모티콘과 같은 특수 문자 또는 일반적이지 않은 문자를 사용하세요. 문자가 깨질 수 있습니다. 따라서 Excel 파일을 생성할 때 이러한 문자를 사용하지 않도록 주의해야 합니다.

  1. PHPExcel 라이브러리 사용

PHPExcel은 Excel 파일을 읽고 쓰는 데 널리 사용되는 PHP 라이브러리입니다. 다양한 파일 읽기 방법과 PDF, CSV 등 다양한 형식의 내보내기 방법이 포함되어 있습니다. 또한 PHPExcel에는 인코딩 변환 기능과 열 너비 및 셀 형식 등의 자동 계산 기능이 내장되어 있어 Excel 파일 처리에 선호되는 라이브러리 중 하나입니다.

예를 들어 Excel 파일에 데이터를 쓰고 XLS 형식으로 내보내려면 다음 코드를 사용할 수 있습니다.

require_once 'PHPExcel.php';

$objPHPExcel = new PHPExcel();
$objPHPExcel-> ; setActiveSheetIndex(0);

$objPHPExcel->getActiveSheet()->setCellValue('A1', '이름');
$objPHPExcel->getActiveSheet()->setCellValue('B1', '성별 ' );
$objPHPExcel->getActiveSheet()->setCellValue('C1', 'Age');

$objPHPExcel->getActiveSheet()->setCellValue('A2', '장산') ;
$objPHPExcel->getActiveSheet()->setCellValue('B2', 'M');
$objPHPExcel->getActiveSheet()->setCellValue('C2', '20');

header ( 'Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="example.xls"');
header('Cache-Control: max-age=0' ) ;

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');

결론

PHP에서 Excel 파일을 처리할 때, 항상 사용된 인코딩을 염두에 두고 모든 것이 동일한 방식으로 인코딩되었는지 확인하세요. 동시에 Excel 파일을 처리하려면 특수 문자를 사용하지 말고 적절한 라이브러리 기능을 사용하도록 주의해야 합니다. 이러한 모범 사례를 따르면 Excel에서 잘못된 문제를 쉽게 해결하고 효율적인 Excel 파일을 만들 수 있습니다.

위 내용은 PHP는 Excel의 모든 곳에서 깨졌습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.