• 09-03-2014, 16:29:30
    #10
    Üyeliği durduruldu
    Celko adlı üyeden alıntı: mesajı görüntüle
    Arkadaşlar merhaba;

    Php ile sql'deki verileri excel dosyasına dökmek istiyorum.

    bunun için elinde hazır şablon bulunan var mı elinde?

    iyi çalışmalar.
    bazı işlemler için kütüphane aramaktansa
    sayfa başına
    <?php
    header("Content-type: application/vnd.ms-xls");
    header("Content-Disposition: attachment; Filename=veriler.xls");
    ////////////////mysqlden verileri çektir ve yazdır///////////////////////////777777

    ?>
  • 09-03-2014, 19:58:11
    #11
    Kimlik doğrulama veya yönetimden onay bekliyor.
    @Celko; şu örnek işinize yarayabilir.

    Bilgisayarınızda veya sunucunuzda Composer kurulu değilse şu yazımı okumanızı tavsiye ediyorum.

    composer.json;
    {
    	"minimum-stability": "dev",
    	"require": {
    		"imsaintx/utils": "dev-master",
    		"phpoffice/phpexcel": "dev-master"
    	}
    }
    app.php;
    <?php
    	
    	error_reporting(E_ALL);
    	
    	ini_set("display_errors", true);
    	ini_set("display_startup_errors", true);
    	ini_set("html_errors", false);
    	
    	set_include_path(str_replace("\\", "/", dirname(realpath(__FILE__))));
    	
    	date_default_timezone_get("Europe/Istanbul");
    	
    	function path($file)
    	{
    		return get_include_path()."/".$file;
    	}
    	
    	function load($file)
    	{
    		require(get_include_path()."/{$file}");
    	}
    	
    	load("vendor/autoload.php");
    	
    	use \Tools\Utils;
    	
    	Utils::utf8_header("text/plain");
    	
    	define("DB_HOST", "127.0.0.1");
    	
    	define("DB_PORT", 3306);
    	
    	define("DB_USER", ""); # MySQL kullanıcı adı
    	
    	define("DB_PASS", ""); # MySQL şifre
    	
    	define("DB_NAME", ""); # MySQL veritabanı ismi
    	
    	define("DB_CHARSET", "utf8");
    	
    	define("DB_COLLATE", "utf8_general_ci");
    	
    	$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME, DB_PORT);
    	
    	$mysqli->set_charset(DB_CHARSET);
    	
    	$mysqli->query(
    		sprintf("SET NAMES %s;", DB_CHARSET).
    		sprintf("SET NAMES %s COLLATE %s;", DB_CHARSET, DB_COLLATE).
    		sprintf("SET character_set_client = %s;", DB_CHARSET).
    		sprintf("SET character_set_results = %s;", DB_CHARSET).
    		sprintf("SET character_set_connection = %s;", DB_CHARSET).
    		sprintf("SET collation_connection = %s;", DB_COLLATE)
    	);
    	
    	$objPHPExcel = new PHPExcel();
    	
    	$objPHPExcel->getProperties()->setCreator("Ogün Karakuş")->setlastModifiedBy("Ogün Karakuş")->setTitle("Test Document");
    	
    	$query = $mysqli->query("SELECT * FROM `TABLO_İSMİ`"); # MySQL sorgusu
    	
    	$fields = $query->fetch_fields();
    	
    	$alphabet = range("A", "Z");
    	
    	foreach($fields as $key => $value)
    	{
    		$cell = $alphabet[$key] . "1";
    		
    		$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cell, $value->name);
    		
    		$objPHPExcel->getActiveSheet()->getColumnDimension($alphabet[$key])->setWidth(12);
    	}
    	
    	$rows = array();
    	
    	while($row = $query->fetch_assoc())
    	{
    		$rows[] = $row;
    	}
    	
    	foreach($rows as $key => $value)
    	{
    		$values = array_values($value);
    		
    		foreach($values as $key2 => $value2)
    		{
    			$cell = $alphabet[$key2];
    			$cell .= (string) $key + 2;
    			
    			$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cell, $value2);
    		}
    	}
    	
    	$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, "Excel2007");
    	
    	$objWriter->save(path("test-document.xlsx"));
    	
    	$mysqli->close();
    	
    	echo "test-document.xlsx olarak kaydedildi.";
  • 09-03-2014, 20:36:22
    #12
    @saintx üstad composer i kurdum.

    app.php'yi oluşturduğum dizine composer.json'u da oluşturdum.

    Fakat bu hatayı alıyorum.

    Warning: require(C:/wamp/www/parti/siparis/vendor/autoload.php): failed to open stream: No such file or directory in C:\wamp\www\parti\siparis\app.php on line 24 Call Stack: 0.0003 401920 1. {main}() C:\wamp\www\parti\siparis\app.php:0 0.0004 402536 2. load() C:\wamp\www\parti\siparis\app.php:27 Fatal error: require(): Failed opening required 'C:/wamp/www/parti/siparis/vendor/autoload.php' (include_path='C:/wamp/www/parti/siparis') in C:\wamp\www\parti\siparis\app.php on line 24 Call Stack: 0.0003 401920 1. {main}() C:\wamp\www\parti\siparis\app.php:0 0.0004 402536 2. load() C:\wamp\www\parti\siparis\app.php:27
  • 09-03-2014, 20:42:15
    #13
    @Celko; dizinde composer'ı install ettin mi?

  • 09-03-2014, 20:56:50
    #14
    @saintx üstad composer'i install ettim. ve çalıştığım dizine composer.json u ekledim.

    dizin görüntüm.



    composer'i kurarken istediği php.exe dosyasını c:/wamp/bin/php/php5.3.10 klasöründeki php.exe i gösterdim.
    sonrasında kurulum kendi kendine tamamlanıyor zaten.
    wamptan açmam gereken bir özellik var mı ?

    edit: gösterdiğin şekilde install işleminide yaptım sağ tıklayıp
  • 09-03-2014, 21:47:22
    #15
    @Celko; sonuç nedir? çalıştırabildin mi?
  • 09-03-2014, 21:49:12
    #16
    @saintx malesef hocam. hala aynı hata
  • 09-03-2014, 21:56:51
    #17
    @Celko; Skype'dan bana yazar mısın?
  • 09-03-2014, 23:48:43
    #18
    @Celko; alt kısımda örnek bir kod gönderiyorum. Yalnız bunu yazdığım zamanlar utf-8 de karakter problem yaşadığım için verileri ansiye çevirip çözmüştüm. Sizde alttaki kodları bir php dosyasına ekleyin ve dosya tipini ansi yapın (örnek: http://prntscr.com/2zfe5c).

    Veritabanı kodlaması olarak düz mysql kullandığınızı varsayarak aşağıdaki örneği hazırladım eğer mysqli veya pdo kullanıyorsanız aşağıdaki sorgu kısımlarını düzenlemeyi ve veritabanı bağlantınızı yapmayı unutmayınız.

    <?php
    /**
    * YKDSoFT
    */
    
    function xlsBOF()
    {
    	echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
    	return;
    }
     
    function xlsEOF()
    {
    	echo pack("ss", 0x0A, 0x00);
    	return;
    }
     
    function xlsWriteNumber($Row, $Col, $Value)
    {
    	echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);
    	echo pack("d", $Value);
    	return;
    }
     
    function xlsWriteLabel($Row, $Col, $Value )
    {
    	$L = strlen($Value);
    	echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
    	echo $Value;
    	return;
    }
    
    function ISOCevir($Deger)
    {
    	if (!empty($Deger))
    	{
    		return iconv("UTF-8", "ISO-8859-9", $Deger);
    	}else{ return false; }
    }
    
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Content-Type: application/force-download");
    header("Content-Type: application/octet-stream");
    header("Content-Type: application/download");;
    header("Content-Disposition: attachment;filename=excelexport.xls ");
    header("Content-Transfer-Encoding: binary ");
    
    xlsBOF();
    xlsWriteLabel(0, 0, "Üye ID");
    xlsWriteLabel(0, 1, "İsim");
    xlsWriteLabel(0, 2, "Soyad");
    xlsWriteLabel(0, 3, "E-Posta");
    
    $xlsRow = 1;
    $Sql = mysql_query("Select id, isim, soyad, eposta From uyeler");
    while(list($uye_id, $isim, $soyad, $eposta) = mysql_fetch_array($Sql))
    {
    	$uye_id = ISOCevir($uye_id);
    	$isim = ISOCevir($isim);
    	$soyad = ISOCevir($soyad);
    	$eposta = ISOCevir($eposta);
    	
    	xlsWriteLabel($xlsRow, 0, $uye_id);
    	xlsWriteLabel($xlsRow, 1, $isim);
    	xlsWriteLabel($xlsRow, 2, $soyad);
    	xlsWriteLabel($xlsRow, 3, $eposta);
    	
    	$xlsRow++;
    }
    
    xlsEOF();
    exit;
    ?>