• 01-02-2020, 00:01:49
    #1
    merhaba arkadaşlar,
    bir noktada takıldım bir sipariş panelim var onaylanan siparişlerin çıktısını excel olarak alıyorum. daha sonra bu exceli kargoya mail atıyordum. yapmak isteiğim şu excel indir butonuna bastığımda excel in bir kopyasınıda sunucuda bir klasöre atmasını istiyorum. destek ve yardımcı olan arkadaşlara şimdiden teşekkürler.
    <?php
    include("baglanti.php");
    include("class.phpmailer.php");
    date_default_timezone_set('Europe/Istanbul');
    
    
    $filelocation = 'file/';
    $filename = 'siparisler-'.date('d-m-y').'-'.date('H.i.s').'.xls';
    $file_export = $filelocation . $filename;
    
    header('Content-Encoding: UTF-8');
    header('Content-Type: text/plain; charset=utf-8');
    header("Content-disposition: attachment; filename=".$filename."");
    
    
    ?>
    <table border="2">
    <tr>
    <td>Tarih</td>
    <td>Adı Soyadı</td>
    <td>Telefon</td>
    <td>Adres</td>
    <td>İl</td>
    <td>İlçe</td>
    <td>Ürün</td>
    <td>Ödeme Tipi</td>
    </tr>
    <?php
    $sql=$dbconn->query("SELECT * from siparisler where durum1='2' order by sip_no");
    
    while($oku=$sql->fetch(PDO::FETCH_ASSOC))
    {
    $tarih = $oku['tarih'];
    $isim = $oku['ad_soyad'];
    $telefon = $oku['tel'];
    $adres = $oku['adres'];
    $sehir = $oku['alan1'];
    $ilce = $oku['alan3'];
    $urun = $oku['urun'];
    $notunuz = $oku['alan3'];
    
    echo
    "<tr>
    <td>$tarih</td>
    <td>$isim</td>
    <td>$telefon</td>
    <td>$adres</td>
    <td>$sehir</td>
    <td>$ilce</td>
    <td>$urun</td>
    <td>$notunuz</td>
    </tr>";
    
    }
    
    
    ?>
    </table>
  • 01-02-2020, 10:58:37
    #2
    Header ile tarayıcıya oluşturulan tabloları excell olarak sunuyorsunuz. Bildiğim kadarıyla bu yöntem ile sunucuya kaydedemezsiniz. Arka planda bu URL e bir request atıp dönen dosyayı kaydet derseniz olabilir ama denemedim.
    Bunun yerine github üzerinden kütüphanelere bakarsanız excell işlemlerini onlarla yapıp sunucuya kaydetmek daha kolay olabilir.
  • 01-02-2020, 14:33:51
    #3
    Merhaba

    PHPExcel kütüphanesini kullanmanızı öneririm;

    https://github.com/PHPOffice/PHPExcel

    Sunucuya sayfanın çalıştığı klasöre

    PHPExcel klasörü ve PHPExcel.php dosyasını atmanız yeterli olacaktır.

    Sayfanız için çalışan bir örnekte yazıyorum.

    sayfaniz-com/ss.php?excel ~ dediğinizde sunucuya .xls dosyası kayıt etmesini sağlayabilirsiniz
    sayfaniz-com/ss.php?excel&output ~ diyerek xls dosyasının download edilmesini sağlayabilirsiniz

    Dizin örneği;


    <?php
    if (isset($_REQUEST['excel'])) {
        include_once 'PHPexcel.php';
        $objPHPExcel = new PHPExcel();
        $objPHPExcel->getProperties()
            ->setTitle('title')
            ->setDescription('description');
    
        $alphabet = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H');
    
        foreach ($alphabet as $k) {
            $objPHPExcel->getActiveSheet()->getColumnDimension($k)->setAutoSize(true);
            $objPHPExcel->getActiveSheet()->getStyle($k . '1')->applyFromArray(array('font' => array('bold' => true)));
        }
    
        $objPHPExcel->setActiveSheetIndex(0);
    
        $objPHPExcel->getActiveSheet()->setCellValue('A1', 'Tarih');
        $objPHPExcel->getActiveSheet()->setCellValue('B1', 'Adı Soyadı');
        $objPHPExcel->getActiveSheet()->setCellValue('C1', 'Telefon');
        $objPHPExcel->getActiveSheet()->setCellValue('D1', 'Adres');
        $objPHPExcel->getActiveSheet()->setCellValue('E1', 'İl');
        $objPHPExcel->getActiveSheet()->setCellValue('F1', 'İlçe');
        $objPHPExcel->getActiveSheet()->setCellValue('G1', 'Ürün');
        $objPHPExcel->getActiveSheet()->setCellValue('H1', 'Ödeme Tipi');
    
    
        $sql= $dbconn->query('SELECT * FROM siparisler WHERE durum1 = 2 ORDER BY sip_no');
    
        $row = 2;
        while ($oku = $sql->fetch(PDO::FETCH_ASSOC)) {
            foreach ($oku as $key => $value) {
                $objPHPExcel->getActiveSheet()->setCellValue($alphabet[$key] . $i, $value);
            }
            $row++;
        }
    
    
        $filename = 'siparisler-' . date('d-m-y') . '-' . date('H.i.s') . '.xls';
    
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    
        if (isset($_REQUEST['output'])) {
            header('Content-Type: application/vnd.ms-excel');
            header('Content-Disposition: attachment;filename="' . $filename . '"');
            header('Cache-Control: max-age=0');
            header('Cache-Control: max-age=1');
            header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
            header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
            header('Cache-Control: cache, must-revalidate');
            header('Pragma: public');
    
            $objWriter->save('php://output');
        } else {
            header('Content-type: application/json');
            $objWriter->save($filename);
            exit(json_encode(array('status' => 'OK', 'file' => $filename)));
        }
    }
    ?>




    G3da adlı üyeden alıntı: mesajı görüntüle
    Merhaba

    PHPExcel kütüphanesini kullanmanızı öneririm;

    https://github.com/PHPOffice/PHPExcel

    Sunucuya sayfanın çalıştığı klasöre

    PHPExcel klasörü ve PHPExcel.php dosyasını atmanız yeterli olacaktır.

    Sayfanız için çalışan bir örnekte yazıyorum.

    sayfaniz-com/ss.php?excel ~ dediğinizde sunucuya .xls dosyası kayıt etmesini sağlayabilirsiniz
    sayfaniz-com/ss.php?excel&output ~ diyerek xls dosyasının download edilmesini sağlayabilirsiniz

    Dizin örneği;


    <?php
    if (isset($_REQUEST['excel'])) {
        include_once 'PHPexcel.php';
        $objPHPExcel = new PHPExcel();
        $objPHPExcel->getProperties()
            ->setTitle('title')
            ->setDescription('description');
    
        $alphabet = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H');
    
        foreach ($alphabet as $k) {
            $objPHPExcel->getActiveSheet()->getColumnDimension($k)->setAutoSize(true);
            $objPHPExcel->getActiveSheet()->getStyle($k . '1')->applyFromArray(array('font' => array('bold' => true)));
        }
    
        $objPHPExcel->setActiveSheetIndex(0);
    
        $objPHPExcel->getActiveSheet()->setCellValue('A1', 'Tarih');
        $objPHPExcel->getActiveSheet()->setCellValue('B1', 'Adı Soyadı');
        $objPHPExcel->getActiveSheet()->setCellValue('C1', 'Telefon');
        $objPHPExcel->getActiveSheet()->setCellValue('D1', 'Adres');
        $objPHPExcel->getActiveSheet()->setCellValue('E1', 'İl');
        $objPHPExcel->getActiveSheet()->setCellValue('F1', 'İlçe');
        $objPHPExcel->getActiveSheet()->setCellValue('G1', 'Ürün');
        $objPHPExcel->getActiveSheet()->setCellValue('H1', 'Ödeme Tipi');
    
    
        $sql= $dbconn->query('SELECT * FROM siparisler WHERE durum1 = 2 ORDER BY sip_no');
    
        $row = 2;
        while ($oku = $sql->fetch(PDO::FETCH_ASSOC)) {
            foreach ($oku as $key => $value) {
                $objPHPExcel->getActiveSheet()->setCellValue($alphabet[$key] . $i, $value);
            }
            $row++;
        }
    
    
        $filename = 'siparisler-' . date('d-m-y') . '-' . date('H.i.s') . '.xls';
    
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    
        if (isset($_REQUEST['output'])) {
            header('Content-Type: application/vnd.ms-excel');
            header('Content-Disposition: attachment;filename="' . $filename . '"');
            header('Cache-Control: max-age=0');
            header('Cache-Control: max-age=1');
            header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
            header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
            header('Cache-Control: cache, must-revalidate');
            header('Pragma: public');
    
            $objWriter->save('php://output');
        } else {
            header('Content-type: application/json');
            $objWriter->save($filename);
            exit(json_encode(array('status' => 'OK', 'file' => $filename)));
        }
    }
    ?>
    En üste;

    <?php
    include("baglanti.php");
    include("class.phpmailer.php");
    date_default_timezone_set('Europe/Istanbul');
    // üstteki satırları yolladığım örneğe dahil edebilirsiniz ve if ($_REQUEST['excel']).. koşulunu iptal ederseniz, sayfayı aktif olarak kullanırsınız.
    // Sizin örneğiniz direk excel download ettirdiğini şimdi fark ettim.
    // PHP Excel ile bu daha sağlıklı olacaktır, xlsx olarakta kayıt ettirmeniz mümkün farklı bir fonksiyonu ile.
  • 01-02-2020, 17:13:37
    #4
    G3da adlı üyeden alıntı: mesajı görüntüle
    Merhaba

    PHPExcel kütüphanesini kullanmanızı öneririm;

    https://github.com/PHPOffice/PHPExcel

    Sunucuya sayfanın çalıştığı klasöre

    PHPExcel klasörü ve PHPExcel.php dosyasını atmanız yeterli olacaktır.

    Sayfanız için çalışan bir örnekte yazıyorum.

    sayfaniz-com/ss.php?excel ~ dediğinizde sunucuya .xls dosyası kayıt etmesini sağlayabilirsiniz
    sayfaniz-com/ss.php?excel&output ~ diyerek xls dosyasının download edilmesini sağlayabilirsiniz

    Dizin örneği;


    <?php
    if (isset($_REQUEST['excel'])) {
        include_once 'PHPexcel.php';
        $objPHPExcel = new PHPExcel();
        $objPHPExcel->getProperties()
            ->setTitle('title')
            ->setDescription('description');
    
        $alphabet = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H');
    
        foreach ($alphabet as $k) {
            $objPHPExcel->getActiveSheet()->getColumnDimension($k)->setAutoSize(true);
            $objPHPExcel->getActiveSheet()->getStyle($k . '1')->applyFromArray(array('font' => array('bold' => true)));
        }
    
        $objPHPExcel->setActiveSheetIndex(0);
    
        $objPHPExcel->getActiveSheet()->setCellValue('A1', 'Tarih');
        $objPHPExcel->getActiveSheet()->setCellValue('B1', 'Adı Soyadı');
        $objPHPExcel->getActiveSheet()->setCellValue('C1', 'Telefon');
        $objPHPExcel->getActiveSheet()->setCellValue('D1', 'Adres');
        $objPHPExcel->getActiveSheet()->setCellValue('E1', 'İl');
        $objPHPExcel->getActiveSheet()->setCellValue('F1', 'İlçe');
        $objPHPExcel->getActiveSheet()->setCellValue('G1', 'Ürün');
        $objPHPExcel->getActiveSheet()->setCellValue('H1', 'Ödeme Tipi');
    
    
        $sql= $dbconn->query('SELECT * FROM siparisler WHERE durum1 = 2 ORDER BY sip_no');
    
        $row = 2;
        while ($oku = $sql->fetch(PDO::FETCH_ASSOC)) {
            foreach ($oku as $key => $value) {
                $objPHPExcel->getActiveSheet()->setCellValue($alphabet[$key] . $i, $value);
            }
            $row++;
        }
    
    
        $filename = 'siparisler-' . date('d-m-y') . '-' . date('H.i.s') . '.xls';
    
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    
        if (isset($_REQUEST['output'])) {
            header('Content-Type: application/vnd.ms-excel');
            header('Content-Disposition: attachment;filename="' . $filename . '"');
            header('Cache-Control: max-age=0');
            header('Cache-Control: max-age=1');
            header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
            header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
            header('Cache-Control: cache, must-revalidate');
            header('Pragma: public');
    
            $objWriter->save('php://output');
        } else {
            header('Content-type: application/json');
            $objWriter->save($filename);
            exit(json_encode(array('status' => 'OK', 'file' => $filename)));
        }
    }
    ?>





    En üste;

    <?php
    include("baglanti.php");
    include("class.phpmailer.php");
    date_default_timezone_set('Europe/Istanbul');
    // üstteki satırları yolladığım örneğe dahil edebilirsiniz ve if ($_REQUEST['excel']).. koşulunu iptal ederseniz, sayfayı aktif olarak kullanırsınız.
    // Sizin örneğiniz direk excel download ettirdiğini şimdi fark ettim.
    // PHP Excel ile bu daha sağlıklı olacaktır, xlsx olarakta kayıt ettirmeniz mümkün farklı bir fonksiyonu ile.
    Teşekkür ederim