PHP Excel Dosyası Okumak, Yazmak ve Oluşturmak XLSX, CSV, XLS, PHPSpreadSheet

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

Bash
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
<?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
<?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
<?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
<?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.

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Alışveriş Sepeti
Hemen iletişime geçin!