반응형
이 글에서 가져온 내용은 php 도출 csv 형식의 엑셀 파일의 구현코드에 관한 것으로, 참고가치가 있으니 필요한 분들은 참고하시어 도움이 되시기 바랍니다
소스 코드 분석
index.php
<?php
require_once "./Export.php";//테스트 데이터
$headerList= ['목록1','목록2','목록3'];
$data = [
['값1','값2','값3'],
['값11','값22','값33'],
['값111','값222','값333']
];
$fileName = "테스트 내보내기 파일 이름";
$tmp = ['백업 필드 1','백업 값 1','','백업 필드 2','백업 값 2'];
$export = new Export();$result = $export->exportToCsv($headerList,$data,$fileName,$tmp);
Export.php
<?php
class export{
/**
* params $headerList 헤더 목록 정보 (1D 배열) 필수 전송
* params $data 내보낸 데이터 (2D 배열) 필수 전송
* params $filename 파일 이름 변환 필수 전송
* params $tmp 백업 정보(2D 배열) 선택
* PS:디지털 포맷이 되면 보이지 않는 기호를 추가하여 정상으로 만들 수 있다,예:"\t"
**/
public function exportToCsv($headerList = [] , $data = [] , $fileName = '' , $tmp = []){
//파일 이름 변환
$fileName = iconv('UTF-8', 'GBK', $fileName); //헤더 헤더 설정
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename=' . $fileName . '.csv');
header('Cache-Control: max-age=0'); //PHP 파일 핸들 열기, php: //output, 브라우저로 직접 출력하기
$fp = fopen("php://output","a"); //예비 정보
foreach ($tmp as $key => $value) {
$tmp[$key] = iconv("UTF-8", 'GBK', $value);
}
//fputcsv를 사용하여 데이터를 파일 핸들에 쓰기
fputcsv($fp, $tmp);
//출력 엑셀 목록 이름 정보
foreach ($headerList as $key => $value) {
$headerList[$key] = iconv('UTF-8', 'GBK', $value);//CSV의 EXCEL은 BGK 인코딩을 지원합니다,꼭 바꿔주세요,그렇지 않으면 난수이다
}
//fputcsv를 사용하여 데이터를 파일 핸들에 쓰기
fputcsv($fp, $headerList); //계수기
$num = 0;
//$limit행마다 출력 buffer를 새로 고칩니다. 너무 크거나 작거나 하지 마십시오
$limit = 100000;
//데이터를 한 줄 한 줄씩 제거하여 메모리를 낭비하지 않는다
$count = count($data);
for($i = 0 ; $i < $count ; $i++){
$num++; 、
//출력 버퍼를 새로 고쳐서 데이터 과다로 인한 문제를 방지합니다
if($limit == $num){
ob_flush();
flush();
$num = 0;
}
$row = $data[$i];
foreach ($row as $key => $value) {
$row[$key] = iconv('UTF-8', 'GBK', $value);
}
fputcsv($fp, $row);
}
}
반응형
'개발 꿀팁 > PHP' 카테고리의 다른 글
php 인터페이스 보안: php 인터페이스 암호화를 위한 네 가지 시나리오 (0) | 2022.07.25 |
---|---|
php는 open, fwrite를 이용하여 다양한 형식의 파일(코드)을 내보냅니다 (0) | 2022.07.25 |
php의 max,min 함수 상세 내역 (0) | 2022.07.23 |
PHP에서 가변 변수와 php 가변 함수는 도대체 무슨 소용이 있습니까? (0) | 2022.07.23 |
PHP가 QR코드의 생성 및 식별(코드)을 구현하는 방법 (0) | 2022.07.22 |