PHP 이용PHPExcel 대신 XLSX Writer 방법 예시

머리말
본 고 는 주로 PHP 이용 에 관 한 것 을 소개 합 니 다.PHPExcel 대신 XLSX Writer 의 방법 을 공유 하여 여러분 께 참고 학습 을 제공 합 니 다.다음은 더 이상 말씀 하지 않 겠 습 니 다.상세 한 소 개 를 살 펴 보 겠 습 니 다.
양 자 는 어떤 차이 가 있 습 니까?
PHPExcel 은 Excel,CVS 파일 을 처리 하 는 오픈 소스 프레임 워 크 로 마이크로소프트 OpenXML 표준 과 PHP 언어 를 기반 으로 합 니 다.이 를 통 해 서로 다른 형식의 전자 표를 읽 고 기록 할 수 있 습 니 다.이것 은 PHP 에서 지금까지 가장 통용 되 는 Excel 처리 도구 입 니 다.그러나 매우 치 명 적 인 단점 이 있 습 니 다.특히 메모 리 를 차지 하고 대량의 표 데 이 터 를 사랑 하지 않 고 처리 속도 가 매우 느 리 지만 기능 이 매우 풍부 하고 API 가 매우 많 기 때문에 복잡 한 형식의 Excel 표를 내 보 낼 때너 는 종종 그것 을 사용 해 야 한다.정말 사람 을 사랑 하고 미워 하 게 한다.
불 행 히 도 PHPExcel 정 부 는 이 프로젝트 를 더 이상 유지 하지 않 았 습 니 다.정부 팀 은 github 에서 새로운 프로젝트 를 만 들 었 습 니 다.PhpSpreadsheet 이 라 고 합 니 다.새로운 프로젝트 는 대량의 phop 새로운 특성 을 사 용 했 습 니 다.예 를 들 어 네 임 스페이스,PSR 기준,성능 도 PHPExcel 보다 많이 높 았 습 니 다.그러나 이 프로젝트 는 지금까지(2017-07-12)개발 상태 이 고 최소 안정 판 은 아직 나 오지 않 았 습 니 다.bug 가 많 을 것 같 아서 사용 하 는 것 을 권장 하지 않 습 니 다.다음 그림 은 프로젝트 이전 설명 입 니 다.

PHPExcel 에 비해 PHPXLSX Writer 는 작고 강 한 Excel 읽 기와 쓰기 플러그 인 입 니 다.PHPExcel 기능 이 풍부 하지 않 습 니 다.많은 고급 작업,예 를 들 어 동결 헤더 등 이 있 지 않 지만 내 보 내기 속도 가 매우 빠 르 고 데이터 양 이 매우 많 으 며 보고서 형식 은 복잡 한 내 보 내기 수요 가 아 닙 니 다.다음 그림 은 공식 속도 와 메모리 테스트 입 니 다.

PHP_XLSX Writer 는 어떻게 사용 합 니까?
다운로드 하 다.
이것 은PHP_XLSXWriter의 github 주소 입 니 다.물론 여러분 도로 컬 다운로드를 통 해 다운 로드 를 클릭 하여 다운로드 할 수 있 습 니 다.압축 을 풀 면 핵심 파일 은 하나 뿐 입 니 다.xlwriter.class.php,examples 디 렉 터 리 는 코드 샘플 디 렉 터 리 입 니 다.참고 할 수 있 는 예 가 많 습 니 다.

쓰다
일상의 대부분 보고서 수요 에 대해 PHPXLSX Writer 는 감당 할 수 있 습 니 다.다음은 하나의 예 를 통 해 API 의 사용 을 익 힐 수 있 습 니 다.
다음 그림 의 보고 서 를 내 보 내 고 브 라 우 저 를 통 해 다운로드 할 것 이 라 고 가정 합 니 다.

코드 구현:

//writer  
$writer = new XLSXWriter();
 //   
$filename = "example.xlsx";
//   header,       
header('Content-disposition: attachment; filename="'.XLSXWriter::sanitize_filename($filename).'"');
header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate');
header('Pragma: public');

//     
$string = array (
 0 => 
 array (
 'payc_bill_time' => '2017-07-12 16:40:44',
 'payt_received_date' => '2017-07-12',
 'ci_name' => '  ',
 'payt_num' => 'YRZB(2012)A0047',
 'payt_scsr_name' => '   ',
 'payt_received' => '300.00',
 'paytd_type' => '  ',
 'emp_name' => '   ',
 ),
 1 => 
 array (
 'payc_bill_time' => '2017-07-12 16:39:55',
 'payt_received_date' => '2017-07-12',
 'ci_name' => '  ',
 'payt_num' => 'YRZB(2012)A0046',
 'payt_scsr_name' => '22222',
 'payt_received' => '45.00',
 'paytd_type' => '  ',
 'emp_name' => '   ',
 )
 );
 //      
$title = array (
 0 => '    ',
 1 => '    ',
 2 => '    ',
 3 => '    ',
 4 => '    ',
 5 => '    ',
 6 => '    ',
 7 => '   ',
);
//     
$sheet1 = 'sheet1';

//         ,          
foreach ($title as $key => $item){
 $col_style[] = $key ==5 ? 'price': 'string';
}

//     ,suppress_row:          ;widths:       
$writer->writeSheetHeader($sheet1, $col_style, ['suppress_row'=>true,'widths'=>[20,20,20,20,20,20,20,20]] );
//        ,      
$writer->writeSheetRow($sheet1, ['xxx    '],
['height'=>32,'font-size'=>20,'font-style'=>'bold','halign'=>'center','valign'=>'center']);

/*     ,    */
$styles1 = array( 'font'=>'  ','font-size'=>10,'font-style'=>'bold', 'fill'=>'#eee',
'halign'=>'center', 'border'=>'left,right,top,bottom');
$writer->writeSheetRow($sheet1, $title,$styles1);
//      ,foreach  
foreach ($data as $value) {
 foreach ($value as $item) { $temp[] = $item;}
 $rows[] = $temp;
 unset($temp);
}
$styles2 = ['height'=>16];
foreach($rows as $row){
 $writer->writeSheetRow($sheet1, $row,$styles2);
}

//     ,              
$writer->markMergedCell($sheet1, $start_row=0, $start_col=0, $end_row=0, $end_col=7);
//    
$writer->writeToStdOut();
exit(0);
위의 모든 줄 코드 에 주석 을 달 았 습 니 다.모 르 면 example 폴 더 의 코드 샘플 과 홈 페이지 의 문 서 를 볼 수 있 지만 문서 가 짧 습 니 다.
갱 내 뛰 기 안내:
자신 이 사용 하 는 과정 에서 도 구 덩이 를 밟 은 적 이 있 습 니 다.여기 열거 해 보 세 요.도움 이 되 기 를 바 랍 니 다.
파일 이름과 클래스 이름 이 대응 하지 않 습 니 다.
require 또는 require 사용 중once 일 때 는 문제 가 되 지 않 지만 자동 로 딩 을 사용 할 때 는 대응 하지 않 기 때문에 식별 할 수 없습니다.자동 으로 불 러 올 수 있 도록 xlsxwriter.class.php 파일 을 프로젝트 에 도입 하고 네 임 스페이스 를 추가 하고 싶 을 수도 있 습 니 다.이 때 당신 이 해 야 할 일 은 파일 이름 을 클래스 이름 XLSX Writer.class.php 로 변경 하 는 것 입 니 다.예 를 들 어 제 가 Component 디 렉 터 리 에 넣 으 면 이 파일 에 네 임 스페이스 namespace Component 를 추가 합 니 다.이 파일 에 네 임 스페이스 가 도입 되 지 않 은 Zip 클래스 가 있 습 니 다.use ZipArchive 를 추가 해 야 합 니 다.
이것 이 완성 되면 프로젝트 의 다른 곳 에서 사용 할 수 있 습 니 다.

use Component;
$writer = new XLSXWriter();
어떻게 열 형식 을 설정 합 니까?
서로 다른 열 은 서로 다른 형식 을 표시 해 야 할 수도 있 습 니 다.기본 값 은 모두 텍스트 형식 이지 만 가끔 은 숫자 열 로 표시 해 야 합 니 다.엑셀 의 함 수 를 사용 하 는 것 보다 편리 합 니 다.예 를 들 어 위의 표 에 있 는 금액 열 은 두 개의 소수점,1000 분 의 비트,숫자 형식 이 어야 합 니 다.
위의 코드 를 보면 숫자 형식 은 writeSheetHeader 방법 에서 설정 되 어 있 습 니 다.price 라 는 열 은 금액 열 입 니 다.다른 형식 이 필요 하 다 면 홈 페이지 홈 페이지 홈 페이지 에 자주 사용 하 는 형식 을 보 여 줍 니 다.
어떤 칸 의 값 을 단독으로 설정 할 수 있 습 니까?
이것 은 현재 실현 되 지 않 았 습 니 다.현재 데이터 의 기록 은 모두 한 줄 씩 기록 되 어 있 습 니 다.이렇게 가 는 입 도 는 지원 되 지 않 습 니 다.그러나 절충 하 는 방법 은 채 울 필요 가 없 는 셀 을 null 에 기록 하면 됩 니 다.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기