PHP

PHP ile Excel Dosyasından Veri Okuma ve Hatalar

PHP ile Excel Dosyasından Veri Okuma
Yazar : Burak Demir

Php ile uygulama geliştirirken Excel dosyalarından veri okuma ihtiyacınız olmuştur. Php ile Excel dosyasından veri okumak için hazırlanmış olan Excel Reader sınıfını kullanacağız.Veri okumanın yanında Php ile Excel‘den veri okumada yaşanılan türkçe karakter problemi nasıl giderilir onu da göreceksiniz. Php ile Excel dosyasından veri okumak için gerekli sınıfları yazı sonundaki bağlantılardan indirebilirsiniz. Uygulamamıza başlayalım.

Excel Reader sınıfını sayfa sonundaki bağlantıdan indirdiğiniz zaman indirmiş olduğunuz zip dosyası içerisinde reader.php ve oleread.inc dosyaları bulunmaktadır. Bu dosyaları uygulama klasörümüzde uygun bir yere kopyalıyoruz. ben Excel klasörü içerisine kopyaladım ve ona göre kullanacağım.

Php ile Excel Dosya Okuma

Örnek Excel Tablom

//Excel class inin yolunu belirtiyoruz.
require_once 'Excel/reader.php';
//Classtan yeni bir nesne türetiyoruz
$excel=new Spreadsheet_Excel_Reader();
$excel->setUTFEncoder('iconv');
//Karakter kodlamasını seçiyoruz.
$excel->setOutputEncoding('UTF-8');
//Okumak istediğimiz excel dosyasını seçiyoruz
$excel->read('burak.xls');
$toplam = 0;// Kayit sayisini tutacak
//$excel->sheets[Sayfa]['numRows'] ->Satir sayisini verir.

    //Satır sayısı kadar döngümüzü çalıştırarak tüm kayıtları çekiyoruz.
    for ( $row = 1; $row <= $excel->sheets[0]['numRows']; $row ++ ) {
        //$excel->sheets[0]['cells'][ $row ][1] = A sütunu anlamına gelmektedir.
        //İstediğimiz sütunları belirliyoruz. Ben a ve b sütünunu seçiyorum.
        echo $excel->sheets[0]['cells'][ $row ][1] . '-' . $excel->sheets[0]['cells'][ $row ][2] . '<br/>';
    }

PHP ile Excel Dosyasından Veri Okuma Türkçe Karakter Problemi

Php ile Excel dosyasından veri okuma sırasında Türkçe karakter problemi yaşıyorsanız çözümü çok basit. setOutputEncoding() metodunu setOutputEncoding(‘UTF-8’) şeklinde yaparak ve Reader.php içinde bulunan bu satırı

$retstr = ($asciiEncoding) ? $retstr : $this->_encodeUTF16($retstr);

aşağıdaki satırla

$retstr = ($asciiEncoding) ? iconv('cp1250', 'utf-8', $retstr) : $this->_encodeUTF16($retstr);

değiştirdiğiniz zaman problem çözülecektir.

Php Reader sınıfını indirmek için buraya tıklayınız.

Yazar Hakkında

Burak Demir

Süleyman Demirel Üniversitesi Bilgisayar Mühendisliği öğrencisiyim. Yazılım, bilgi güvenliği, adli bilişim ve bir çok konuda meraklı !asosyal bir yazılımcı.