seo

php excel to mysql

8 Tem, 2008  |  Yazar:  |  Kategori:GÜNCEL, Projelerim, Teknik Destek, Teknoloji

Bu yazımda son dönemde geliştirdiğim projelerde ihtiyacım olduğundan araştırıp öğrendiğim excel dosyasını mysql veritabanına aktarma konusunda olucak.

Excel verilerini php üzerinden okumak için öncelikle hazırlanmış bir kütüphane kullanacağız.

Kütüphaneyi indirmek için

require_once 'Excel/reader.php'; //öncelikle kütüphanemizi tanımlıyoruz.
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('CP1251');
$data->read('resimler.xls'); //excel dosyasının adı

//verileri okuma işlemi başlıyor

$urunkodu = $data->sheets[0]['cells'][1][1];  //1. sütundaki 1. satır
$urunadi = $data->sheets[0]['cells'][1][2]; //2. sütundaki 1. satır
$urunfiyati = $data->sheets[0]['cells'][1][4]; //4. sütundaki 1. satır
$urunkategorisi = $data->sheets[0]['cells'][1][5]; //5. sütundaki 1. satır
$urungrubu = $data->sheets[0]['cells'][1][6]; //6. sütundaki 1. satır

//bu şekilde verileri tektek çekebilirsiniz.
// tüm satırları okumak için aşağıdaki kodu kullanabilirsiniz.

for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
$urunkodu = $data->sheets[0]['cells'][$i][1];
$urunadi = $data->sheets[0]['cells'][$i][2]; //2. sütundaki 1. satır
$urunfiyati = $data->sheets[0]['cells'][$i][4]; //4. sütundaki 1. satır
$urunkategorisi = $data->sheets[0]['cells'][$i][5]; //5. sütundaki 1. satır
$urungrubu = $data->sheets[0]['cells'][$i][6]; //6. sütundaki 1. satır
 print_r($urunkodu); //bu şekilde tüm urunkodlarını bastırabilirsiniz

//bu şekilde bulunan tüm değerleri  değişkenlere atayabilirsiniz.

mysql_query("INSERT INTO urunler(urun_kodu,urun_adi,urun_fiyati,urun_kategorisi,urun_grubu)VALUES("$urunkodu","$urunadi","urunfiyati","urunkategorisi","urungrubu");
//bu şekilde tüm kayıtları veritabanına kaydedebilirsiniz.
}

Örnek data :

Excel Veri Örneği

faydalı olması ümidiyle.
Saygılarımla,

Sizde yorum yapabilirsiniz!

  1. Seyfullah  |  Mayıs 29th, 2009 at 18:41 #

    Türkçe karakter sorunu var. UTF-8 encoder ile denedim yine olmadı.
    Yapanlar açıklarsa iyi olur.

    Seyfullah - Gravatar
  2. Mustafa TOSUN  |  Temmuz 23rd, 2009 at 02:00 #

    Selamlar,
    Turkce karakter sorununu su sekilde cozebilirsin,

    $data->setOutputEncoding(‘UTF-8′);

    ———–
    ve asagidaki function la ciktilari kontrol ediyoruz, tr karakter sorunu olan varsa degistirsin diyerek,, ben buyuk kucuk harf ayrimi yapmadim,,,
    ————

    function tr_($gelen){

    $karakterset = array(“\xf6″ => ‘Ö’,”\xd6″ => ‘Ö’,”\xfe” => ‘Ş’,”\xfd” => ‘ı’,”\xde” => ‘Ş’,”\xf0″ => ‘Ğ’,”\xdd” => ‘İ’,”\xd0″ => ‘Ğ’,”\xfc” => ‘Ü’,”\xdc” => ‘Ü’,”\xe7″ => ‘Ç’,”\xc7″ => ‘Ç’);

    $deger = strtr($gelen,$karakterset);

    return $deger;
    }

    —————-
    ve tabiki ornek olarak function cagirilmali,,
    —————

    echo tr_($urunkodu);

    Saygilarimla,,,

    Mustafa TOSUN - Gravatar
  3. ömer  |  Ağustos 14th, 2009 at 16:28 #

    arkadaşlar bu kadar zahmete gerek yok
    $data->setOutputEncoding(‘CP1251′); yerine aşağıdakini yazdım direk türkçe problemi kalktı bende çok güzel bozuk karakter yok sadece ISO-8859-9 yazmam yettii.
    $data->setOutputEncoding(‘ISO-8859-9′);

    ömer - Gravatar
  4. TAN  |  Şubat 17th, 2010 at 10:24 #

    The filename xxx.xls is not readable diye hata alıyorum neden olabilir acaba

    TAN - Gravatar
  5. TAN  |  Şubat 17th, 2010 at 14:14 #

    Sorunu cözdüm: Eğer xls içinde biçimlendirilmemiş data varsa (xls dosyası başka bir db den export ise) sorun çıkabiliyor dosya açılıp yeniden kaydedilince sorun gideriliyor.

    TAN - Gravatar
  6. Suphi  |  Şubat 23rd, 2010 at 03:28 #

    sorumlu davranışınız için teşekkürler. Aynı sorunla karşılaşanlar için oldukça yardımcı olacaktır.

    Suphi - Gravatar
  7. derviş  |  Mart 8th, 2010 at 22:37 #

    The filename /tmp/phpR1FGG8 is not readable

    bu hatayı alıyorum izinleri verdim ayardımcı olursanız sevinirim

    derviş - Gravatar
  8. Şenol  |  Nisan 6th, 2010 at 14:39 #

    Fazla sayıda veri olduğu zaman çok yavaş çalışıyor. Örneğin; 15000.

    Şenol - Gravatar
  9. Anonim  |  Kasım 9th, 2010 at 15:18 #

    [...] [...]

    Anonim - Gravatar
  10. Ender CAN  |  Mayıs 1st, 2013 at 21:32 #

    Güzel bir kütüphane. Ancak bir sorun var. Benim elimde 11000 satırlık bir excel dosyası var bunu db ye aktarmam gerekiyor. Ancak read() fonksiyonu bu kadar satırı görünce hata veriyor. Hata dan kastım yarıda kesilmesi. Aynı dosyayı 2000 satıra indirince çalışmaya başlıyor. Acaba kütüphanede bir kısıtlama mı var ? Bilginiz varsa paylaşırsanız sevinirim.

    Ender CAN - Gravatar
  11. Suphi  |  Mayıs 10th, 2013 at 12:49 #

    kullandığınız kütüphaneyi paylaşırsanız, kodlarını inceleyip yardımcı olmaya çalışırım. Sunucunuzdaki bir zaman aşımından kaynaklanıyor olabilir mi?

    Suphi - Gravatar
  12. exel  |  Aralık 19th, 2013 at 17:49 #

    exelreader kütüphanesi yok onu tekrar upload ederseniz sevinirim

    exel - Gravatar
  13. cemal himmetoğlu  |  Eylül 4th, 2014 at 14:17 #

    Merhabalar,
    Konu eski ama güncelliğini kaybetmiyor, çalışma için de ellerinize sağlık. yukarıda Ender Can arkadaşımızın belirttiği gibi bende de 14 sütun 31.000 satır aktarımını yapamıyorum.
    dosya isimleri :reader.php oleread.php oleread.inc bunları buraya koymak istedim fakat olmadı

    Ayrıca aynı dosyada diğer sayfalardan da bilgi alamıyorum.

    Kodları ekledim, normalde çalışıyor

    soru 1:
    Aşağıda belirttiğim kodlar çalışmaktadır. Fakat Dosya 14 sütun 31000 satır olunca açıp okuyamıyor, nefesi yetmiyor, ancak 2300 satırda okumayı ve aktarmayı yapıyor, Öyleki aktaracağım dosya büyüklüğü 100.000 satırları bulacağı için bu aktarımda işlemi yapamadım.
    sorun 2:
    Sayfaları okutmak istedim fakat sadece ilk sayfayı okuyor, diğer sayfaları okutamadım,
    $excel->sheets[SAYFA]['cells'][SATIR][SUTUN]; buraya sayfa numarası yazdım olmadı, sayfa adını yazdım olmadı,
    büyük dosyaları nasıl aktaracağız, çünkü aktarım web sayfasından form üzerinden olması gerektiği için, csv, sql, aktarım programı navitac gibi onları kullanamıyorum. bir fikir bir yol gösterirseniz sevinirim, teşekkürler
    require_once ‘Excel/reader.php’;
    //yeni excel dosyamız
    $data = new Spreadsheet_Excel_Reader();
    //çıkış karakter kodu. Yani Türkçe karakterler için ayar yaptık
    setOutputEncoding(‘ISO-8859-9′);
    $kaynak1 = $_FILES["dosya"]["tmp_name"]; //yüklenen dosyanın dı
    $klasor1 = “excelorderstat/”; // alınan excel dosyasının kopyalanacağı hedef yerimiz
    $yukle1 = $klasor1.basename($_FILES['dosya']['name']);
    $yukle2 = basename($_FILES['dosya']['name']); // dosyanın adını attığımız değişken
    if(move_uploaded_file($kaynak1, $yukle1))
    {
    echo “Dosya “. basename($_FILES['dosya']['name']). ” Başarıyla yüklendi…”;
    }
    else
    {
    echo “Dosya Yükleme İşlemi Başarısız… “;
    }
    $data->read(‘excelorderstat/’.$yukle2);
    for($i = 2; $i sheets[0]['numRows']; $i++) { //i=2 demek excelin ikinci satırından başlanacakdemektir.
    $SO_NO = $data->sheets[0]['cells'][$i][1]; //1.sütundaki satırı oKur
    $MUS_NO = $data->sheets[0]['cells'][$i][2]; //2. sütundaki satırı okur
    $MUS_AD = $data->sheets[0]['cells'][$i][3];
    $ITEM_NO = $data->sheets[0]['cells'][$i][4];
    $URUN_ADI = $data->sheets[0]['cells'][$i][5];
    $SAT_ADEDI = $data->sheets[0]['cells'][$i][6];
    $TOPLAM_TUTAR = $data->sheets[0]['cells'][$i][7];
    $SIP_SEK = $data->sheets[0]['cells'][$i][8];
    $SIP_TAR = $data->sheets[0]['cells'][$i][9];
    $FAT_TAR = $data->sheets[0]['cells'][$i][10];
    $MUS_REF = $data->sheets[0]['cells'][$i][11];
    $SAT_KOD = $data->sheets[0]['cells'][$i][12];
    $SIP_TAR1 = date(‘Y-m-d’) ;
    $FAT_TAR1 = date(‘Y-m-d’) ;
    $yeni1 = “INSERT INTO orderstatm
    ( SO_NO, MUS_NO, MUS_AD, ITEM_NO, URUN_ADI, SAT_ADEDI, TOPLAM_TUTAR, SIP_SEK, SIP_TAR, FAT_TAR, MUS_REF, SAT_KOD ) values
    (‘$SO_NO’, ‘$MUS_NO’, ‘$MUS_AD’,’$ITEM_NO’,’$URUN_ADI’, ‘$SAT_ADEDI’, ‘$TOPLAM_TUTAR’, ‘$SIP_SEK’, ‘$SIP_TAR1′, ‘$FAT_TAR1′, ‘$MUS_REF’, ‘$SAT_KOD’ )”;
    $SQL = mysql_query($yeni1) ;
    }
    echo “yükleme işlemi başarı ile gerçekleşti.”;

    cemal himmetoğlu - Gravatar

Yorum Yazabilirsiniz

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

seo