• 10-03-2014, 18:34:55
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba,

    xls dosyamı import ederek veri girişi yapmak istiyorum. klasik php excel reader içinde

     $data->read('okb.xls');
    şeklinde dosya adı verebiliyorsunuz ama ben dosya adı vermesem de yuklesem bu işi nasıl çözeriz?

    Teşekkürler
  • 10-03-2014, 19:12:28
    #2
    Excel dosyasini önce upload ettirip sonra read edebilirsiniz.

    Discovery cihazımdan Tapatalk kullanılarak gönderildi
  • 10-03-2014, 21:11:19
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    @yasarkemaldag; +1, bu sınıf ile yüklemeyi düzgünce yapabilirsiniz.
  • 10-03-2014, 22:00:06
    #4
    teşekkür ederim, inceleyeceğim çözemediğim durum olursa yardım isterim tekrar
  • 11-03-2014, 01:11:13
    #5
    Formdan veriyi gönderiyorum, adını değiştiriyorum ve yeni adı bir değişkene atıyorum.

    çalışan php kodlarım:

    require_once 'excel/reader.php';
    
    $Dturu=array("application/vnd.ms-excel","application/vnd.ms-excel");
    $Duzanti=array("xls","xlsx");
    if(isset($_POST['gonder']))
    {
    $kaynak     =$_FILES['excel']['tmp_name'];
    $excel      =$_FILES['excel']['name'];
    $boyut      =$_FILES['excel']['size'];
    $turu       =$_FILES['excel']['type'];
    $uzanti     =substr($excel,strpos($excel,'.')+1);
    $yeniAd     =substr(uniqid(md5(rand())),0,35).'.'.$uzanti;
     
    $hedef      ="dosyalar/";
        if($kaynak)
        {
            if(!in_array($turu,$Dturu) && !in_array($uzanti,$Duzanti))
            {
             
                echo "Lütfen Bir Excel Dosyası Seçiniz";
            }
            else if($boyut>1024*1024*1024)
            {
                echo "Dosyanızın Boyutu 1MB yüksek Olmamalı";
            }
            else
            {
             
                if(move_uploaded_file($kaynak,$hedef.$yeniAd))
                {
    				
            //Eğer Yükleme İşlemi başarılı ise olanlar
            
    			   
    	$data = new Spreadsheet_Excel_Reader();
        $data->setOutputEncoding('ISO-8859-9');
        $data->read($yeniAd); 
    							
    				
           for ($row = 2; $row <= $data->sheets[0]['numRows']; $row++)
        {
            
     
            $st1 = mb_convert_encoding( $data->sheets[0]['cells'][$row][1],"UTF-8","ISO-8859-9");
            $st2 = mb_convert_encoding( $data->sheets[0]['cells'][$row][2],"UTF-8","ISO-8859-9");
            $st3 = mb_convert_encoding( $data->sheets[0]['cells'][$row][3],"UTF-8","ISO-8859-9");
            $st4 = mb_convert_encoding( $data->sheets[0]['cells'][$row][4],"UTF-8","ISO-8859-9");
                   
            veriekle($st1,$st2,$st3,$st,$row);    
            
            
        }
    	   
    	   
    	   //SQL BAĞLANTI
    	   
    	   function mysql_conn(){
        $username = "xxx";
        $password = "xxx";
        $database = "xxx";
        $hostname = "localhost";
     
        $db = mysql_connect($hostname,$username,$password) or die ("MYSQL BAĞLANTI HATASI");
        mysql_select_db($database,$db) or die("MYSQL VERİTABANI HATASI");    
        return $db;
    }
    	    
    	   
    	   //db ye giriş
    	   
    	   function veriekle($st1,$st2,$st3,$st4,$row){
                    
            $query = "INSERT INTO TeSt (
            `ID` ,
            `1` ,
            `2` ,
            `3` ,
            `4`
            )
            VALUES (
            NULL , '$st1', '$st2', '$st3', '$st4'
            );";
           
            mysql_query($query,mysql_conn()) or print(mysql_error())."Satir : $row \n";    
     
            if($row == $data->sheets[0]['numRows']) 
            mysql_close(mysql_conn());
    }
    	      
              
                    
                }
                else
                {
                 
                    echo "Dosya yükleme işlemi başarısız oldu";
                }
                 
            }
         
        }
        else
        {
        echo "Lütfen bir Dosya Seçiniz...";
         
        }
     
     
    }
    ?>
    şeklinde

    Deprecated: Assigning the return value of new by reference is deprecated in /home/www/fotografdeposu.com/excel/reader.php on line 504
    The filename a67a4442a8b07a6bd06042b369b2f968531.xls is not readable
    böyle bir hata alıyorum ama neden alıyorum anlamadım.

    yüklenen dosyayı sunucudan indirdiğimde excelde açılıyor. hazırladığım excel dosyası 2007 uyumlu xls

    çıkamadım işin içerisinden
  • 11-03-2014, 01:57:07
    #6
    @oguzhan306; şu konuda bi' mesajım vardı. Oradaki örnek üzerinden geliştirme yapabileceğini düşünüyorum.
  • 11-03-2014, 10:46:23
    #7
    konuyu inceledim ama pek care olmadı sanki. orada hataları göstermemekle ilgili bir kod dizilimi vardı

    error_reporting(E_ALL); 
         
        ini_set("display_errors", true); 
        ini_set("display_startup_errors", true); 
        ini_set("html_errors", false);
    bu satır

    Deprecated: Assigning the return value of new by reference is deprecated in

    hatasını kaldırdı (bilmiyorum belki kafamı kuma gömmüş oldum ama script çalışıyor)

    kodlarımdaki hata ise dosyayı bulamamasıymış (onuda hedef klasör adını vererek çözdüm)

    son hata da veriekle fonksiyonumun yeri

    aslında pek örneği olmayan ve kullanışlı bir script gibi geldi bir an bana hatasız çalıştırınca kodları paylaşacağım