Php ile excel oluşturmak için farklı kütüphaneler mevcut. Bu yazımda PhpSpreadsheet kütüphanesini kullanacağım. Eğer OOP(Object Oriented Programming) seviyorsanız bu kütüphaneyide seveceğinizi düşünüyorum. Bu kütüphaneyle xlsx ya da xls uzantılı excel dosyaları oluşturabilirsiniz.
Aşağıdaki örnek Symfony ile hazırlanmıştır. Symfony ile excel dosyası oluşturup indirmek için örneği kullanabilirsiniz.
Kaynak: https://github.com/PHPOffice/phpspreadsheet/
Döküman: https://phpspreadsheet.readthedocs.io/en/latest/
İçindekiler Tablosu
Gereksinimler
PhpSpreadsheet Yükleme
Yükleme işlemi için composer kullanacağız. Composer ile PhpSpreadsheet’i yüklemek için aşağıdaki kodu terminalizde çalıştırabilirsiniz.
composer require phpoffice/phpspreadsheet
Kullanım
Aşağıdaki örneklerde A sütünün 1’inci sıradaki hücresinde ‘Hello Word’ yazan bir excel dosyası oluşturuluyor ve oluşturulan bu dosya BinaryFileResponse olarak return ediliyor. BinaryFileResponse olarak return ettiğinizde dosyanın indirilmesini sağlayabilirsiniz.
Xlsx Uzantılı Excel Oluşturma
Xlsx uzantılı dosya oluşturmak için Xlsx objesinden $writer adında bir parametre oluşturuyoruz.
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
$spreadsheets = new Spreadsheet();
$spreadsheet = $spreadsheets->getActiveSheet();
$spreadsheet->setCellValue('A1', 'Hello World !');
$writer = new Xlsx($spreadsheets);
$fileName = 'excel_file_name.xlsx';
$temporaryFile = tempnam(sys_get_temp_dir(), $fileName);
$writer->save($temporaryFile);
return (new BinaryFileResponse($temporaryFile))
->setContentDisposition(ResponseHeaderBag::DISPOSITION_INLINE, $fileName);
Xls Uzantılı Excel Oluşturma
Xls uzantılı dosya oluşturmak için Xls objesinden $writer adında bir parametre oluşturuyoruz.
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xls;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
$spreadsheets = new Spreadsheet();
$spreadsheet = $spreadsheets->getActiveSheet();
$spreadsheet->setCellValue('A1', 'Hello World !');
$writer = new Xls($spreadsheets);
$fileName = 'excel_file_name.xls';
$temporaryFile = tempnam(sys_get_temp_dir(), $fileName);
$writer->save($temporaryFile);
return (new BinaryFileResponse($temporaryFile))
->setContentDisposition(ResponseHeaderBag::DISPOSITION_INLINE, $fileName);