PHP ile Excel dosyaları okumak ve yeni excel dosyası oluşturmak önemli bir işlemdir. Web üzerindeki bir çok veri excel dosyaları ile iletilir. Bu yazımızda kolayca bir kaç satır kod ile nasıl excel dosyalarını okuyabilirsiniz ve yazabilirsiniz bundan bahsedicez. Excel işlemlerini phpspreadsheet kullanımı ile yapacağız.
Gereksinimler
Hali hazırda sisteminizde PHP ve composer kurulu olmalı. Özel bir versyion gereksinimi bulunmamakta. Geliştirmeye başlamadan önce aşağıdaki composer komutu ile phpspreadsheet isimli kütüphaneyi kurmanız gerekiyor.
Eğer bilgisayarınızda geliştirme yapıyorsanız windows için geliştirme ortamı olarak laragon’u öneririm. PHP ve MySQL’i sizin için kuracaktır.
Eğer PHP ve Composer kurulumu konusunda bilgi sahibi değilseniz aşağıdaki yazılardan faydalanabilirsiniz.
PHP ve Composer geliştirme ortamı kurulumu
- Laragon ile Windows Bilgisyar’da PHP ve MySQL Kurulumu
- Xampp ile Windows Bilgisyarınıza PHP ve MySQL geliştirme Ortamı Kurulumu
- Windows da PHP dosyalarını komut istemcisinden çalıştırmak (windows cmd)
phpspreadsheet kütüphanesi kurulumu
composer require phpoffice/phpspreadsheet
Excel Dosyalarını Okumak ve Dizi’ye Dönüştürmek
Excel dosyalarını okumak için aşağıdaki örnekten faydalanabilirsiniz.
XLSX Örneği
<?php
require 'vendor/autoload.php';
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
$spreadsheet = $reader->load(__DIR__ . '/data.xlsx');
$sheetData = $spreadsheet->getActiveSheet()->toArray();
Öncelikle kurduğumuz PhpSpreadsheet kütüphanesi ile excel dosyasını okuyoruz ve ardından bir dizi değişkenine dönüştürüyoruz. Yukarıdaki kodlamada yaptığımız bundan ibaret.
Burada dikkat edilmesi gereken diyelim ki Xlsx yerine CSV dosyası okumak istediniz o zaman sadece $reader değişkenini aşağıdaki gibi düzenleyerek kodumuzun aynı şekilde çalışmasını sağlayabiliriz.
CSV Örneği
<?php
require 'vendor/autoload.php';
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();
// Xls için
// $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls();
$spreadsheet = $reader->load(__DIR__ . '/data.xlsx');
$sheetData = $spreadsheet->getActiveSheet()->toArray();
Diğer formatlarda da aynı şekilde $reader ile çağırdığımız class ismini değiştirmemiz yeterli olacaktır.
Excel Dosyasında Hücreye Yazmak veya Yeni Dosya Oluşturmak
Excel dosyasını hücreye yazmak için yine phpspreadsheet kütüphanesinden faydalanacağız.Bu sefer reader yerine writer objesi çağıracağız.
XLSX Yazma ve Oluşturma Örneği
<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello World !');
$writer = new Xlsx($spreadsheet);
$writer->save('hello world.xlsx');
Bu örneğimizde Xlsx writer objesi oluşturduk ve hello world.xlsx isimli bir dosya oluşturarak içine satır ekleme işlemi yaptık.
setCellValue fonksiyonu
bu fonksiyona verdiğimiz kordinatlar olan A1 kordinatına “Hello World!” yazısını yazdırmış olduk.
$writer nesnesi
bu nesne bizim yeni bir dosya oluşturmamızı ve $spreadsheet değişkeninde oluşturduğumuz hücreleri içine yazmamızı sağladı.
CSV Dosyası Oluşturma Örneği
Tabiki bir önceki okuma örneğinde olduğu gibi sadece format belirttiğimiz satırı değiştirerek bu sefer CSV yazma işlemi de yapabiliriz.
<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Csv;
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello World !');
$writer = new Xlsx($spreadsheet);
$writer->save('hello world.xlsx');
Özet
Yukarıda verdiğimiz örnek kodlar ile php dilinde spreadsheet kütüphanesini kullanarak herhangi bir excel formatında (xlsx, xls, csv) dosyaları düzenleyebilir veya yeni bir dosya oluşturabilirsiniz.