@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;
?>