PHP kullanarak oracle database'e bağlanıp bir tabloyu çektikten sonra bu veriyi excel dosyasına yazdırmak istiyorsanız aşağıdaki kodu kullanabilirsiniz. Bu kod Türkçe karekter desteklemez, çıktınız Türkçe karekter içeriyorsa UTF-8 BOM satırını açmanız gerekir.
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');
$username = "username"; // Kullanıcı
$password = "password"; // Şifre
$database = "host:1521/NOR"; // Database adresi
$connectora = oci_connect($username, $password, $database, 'UTF8');
if (!$connectora) {
$m = oci_error();
trigger_error('Could not connect to database: '. $m['message'], E_USER_ERROR);
}
$parse = oci_parse($connectora, $query);
if (!$parse) {
$m = oci_error($connectora);
trigger_error('Could not parse statement: '. $m['message'], E_USER_ERROR);
}
$r = oci_execute($parse);
if (!$r) {
$m = oci_error($parse);
trigger_error('Could not execute statement: '. $m['message'], E_USER_ERROR);
}
function filterData(&$str){
$str = preg_replace("/\t/", "\\t", $str);
$str = preg_replace("/\r?\n/", "\\n", $str);
if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
}
$fileName = "Dosya_export_".date('Ymd') . ".xlsx";
ob_end_clean();
header('Content-Encoding:UTF-8');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; charset=UTF-8; encoding=UTF-8");
header('Content-Disposition: attachment; filename='.basename($fileName));
header('Content-Transfer-Encoding: binary'); //binary veya ascii
header('Cache-Control: must-revalidate');
header('Cache-Control: max-age=1');
header('Pragma: public');
flush();
$developersData = array();
header('Content-Transfer-Encoding: binary'); //binary veya ascii
header('Cache-Control: must-revalidate');
header('Cache-Control: max-age=1');
header('Pragma: public');
flush();
$developersData = array();
//echo "\xEF\xBB\xBF"; // UTF-8 BOM
while($row = oci_fetch_assoc($parse)){
$developersData[] = $row;
}
$showColoumn = false;
if(!empty($developersData)) {
foreach($developersData as $developerInfo) {
if(!$showColoumn) {
echo implode("\t", array_keys($developerInfo)) . "\n";
$showColoumn = true;
}
else {
array_walk($developerInfo, 'filterData');
echo implode("\t", array_values($developerInfo)) . "\n";}
}
}
exit;
?>