이 번들은 Symfony 4/5/6/7 앱을 PHPOffice PhpSpreadsheet 생산성 라이브러리와 통합합니다.
이 번들에는 각 PHPOffice 라이브러리의 전제 조건 외에도 다음이 필요합니다.
* PHP 7.2 or higher
* Symfony 4 or higher
참고: v1.0.0 이전 태그(예: v0.2.0)는 PHP <= 7.1 및 Symfony <= 4.4 모두에 대한 지원 중단 상태로 인해 더 이상 지원되지 않습니다.
최신 안정 버전을 요구하려면 작곡가를 사용하세요.
composer require yectep/phpspreadsheet-bundle
Flex를 사용하지 않는 경우 AppKernel.php
또는 bundles.php
파일에서 번들을 활성화하세요.
$ bundles = array (
[...]
new Yectep PhpSpreadsheetBundle PhpSpreadsheetBundle (),
);
이 번들은 phpoffice.spreadsheet
서비스를 활성화합니다.
공식 PHPOffice PhpSpreadsheet 문서도 참조하세요.
빈 PhpOfficePhpSpreadsheetSpreadsheet
개체를 생성하거나, 선택적 $filename
전달된 경우 PhpOfficePhpSpreadsheetIOFactory
인스턴스화하여 적절한 IWriter
클래스를 자동으로 감지하고 사용하여 파일을 읽습니다.
// In your controller
$ newSpreadsheet = $ this -> get ( ' phpoffice.spreadsheet ' )-> createSpreadsheet ();
$ existingXlsx = $ this -> get ( ' phpoffice.spreadsheet ' )-> createSpreadsheet ( ' /path/to/file.xlsx ' );
string
$type) 지정된 $type
의 PhpOfficePhpSpreadsheetReader
클래스 인스턴스를 반환합니다.
유형은 대소문자를 구분합니다. 지원되는 유형은 다음과 같습니다.
Xlsx
: 엑셀 2007Xls
: 엑셀 5/BIFF (95)Xml
: 엑셀 2003 XMLSlk
: 심볼릭 링크(SYLK)Ods
: 개방형/자유오피스(ODS)Csv
: CSVHtml
: HTML $ readerXlsx = $ this -> get ( ' phpoffice.spreadsheet ' )-> createReader ( ' Xlsx ' );
$ spreadsheet = $ readerXlsx -> load ( ' /path/to/file.xlsx ' );
Spreadsheet
$spreadsheet, string
$type) PhpOfficePhpSpreadsheetSpreadsheet
개체와 작성기 $type
주어지면 해당 유형에 대한 PhpOfficePhpSpreadsheetWriter
클래스의 인스턴스를 반환합니다.
위의 읽기 유형 외에도 적절한 PHP 라이브러리가 설치된 경우 이러한 유형이 쓰기에 추가로 지원됩니다.
Tcpdf
Mpdf
Dompdf
$ spreadsheet = $ this -> get ( ' phpoffice.spreadsheet ' )-> createSpreadsheet ();
$ spreadsheet -> getActiveSheet ()-> setCellValue ( ' A1 ' , ' Hello world ' );
$ writerXlsx = $ this -> get ( ' phpoffice.spreadsheet ' )-> createWriter ( $ spreadsheet , ' Xlsx ' );
$ writerXlsx -> save ( ' /path/to/destination.xlsx ' );
기여를 환영합니다. 프로젝트를 포크하고 완료되면 PR을 제출하세요.
남은 할 일은 다음과 같습니다:
Symfony Serializer 구성 요소 + CSV 인코더에서 마이그레이션하는 경우 다음과 같은 코드를 사용할 수 있습니다.
$ spreadsheet = $ this -> get ( ' phpoffice.spreadsheet ' )-> createSpreadsheet ();
$ sheet = $ spreadsheet -> getActiveSheet ();
$ sheet -> setTitle ( $ this -> filterVars [ ' wareCategory ' ]-> getTitle ());
$ columnsMap = [];
$ lineIndex = 2 ;
foreach ( $ data as $ line ) {
foreach ( $ line as $ columnName => $ columnValue ) {
if ( is_int ( $ columnIndex = array_search ( $ columnName , $ columnsMap ))) {
$ columnIndex ++;
} else {
$ columnsMap [] = $ columnName ;
$ columnIndex = count ( $ columnsMap );
}
$ sheet -> getCellByColumnAndRow ( $ columnIndex , $ lineIndex )-> setValue ( $ columnValue );
}
$ lineIndex ++;
}
foreach ( $ columnsMap as $ columnMapId => $ columnTitle ) {
$ sheet -> getCellByColumnAndRow ( $ columnMapId + 1 , 1 )-> setValue ( $ columnTitle );
}
$ writer = $ this -> get ( ' phpoffice.spreadsheet ' )-> createWriter ( $ spreadsheet , ' Xlsx ' );
ob_start ();
$ writer -> save ( ' php://output ' );
$ excelOutput = ob_get_clean ();
return new Response (
$ excelOutput ,
200 ,
[
' content-type ' => ' text/x-csv; charset=windows-1251 ' ,
' Content-Disposition ' => ' attachment; filename="price.xlsx" '
]
);