MySQL Excel nesil PHP kullanarak

7 Cevap php
<?php
    // DB Connection here
    mysql_connect("localhost","root","");
    mysql_select_db("hitnrunf_db");

    $select = "SELECT * FROM jos_users ";
    $export = mysql_query ( $select ) or die ( "Sql error : " . mysql_error( ) );
    $fields = mysql_num_fields ( $export );

    for ( $i = 0; $i < $fields; $i++ )
    {
        $header .= mysql_field_name( $export , $i ) . "\t";
    }

    while( $row = mysql_fetch_row( $export ) )
    {
        $line = '';
        foreach( $row as $value )
        {
            if ( ( !isset( $value ) ) || ( $value == "" ) )
            {
                $value = "\t";
            }
            else
            {
                $value = str_replace( '"' , '""' , $value );
                $value = '"' . $value . '"' . "\t";
            }
            $line .= $value;
        }
        $data .= trim( $line ) . "\n";
    }
    $data = str_replace( "\r" , "" , $data );

    if ( $data == "" )
    {
        $data = "\n(0) Records Found!\n";
    }

    header("Content-type: application/octet-stream");
    header("Content-Disposition: attachment; filename=your_desired_name.xls");
    header("Pragma: no-cache");
    header("Expires: 0");
    print "$header\n$data";
?>

The code above is used for generating an Excel spreadsheet from a MySQL database, but we are getting following error:

The file you are trying to open, 'users.xls', is in a different format than specified by the file extension. Verify that the file is not corrupted and is from a trusted source before opening the file. Do you want to open the file now?

Sorunun ne olduğunu ve bunu nasıl düzeltebilirim?

7 Cevap

Eğer gerçekten bir Excel dosyasını üreten değiliz. Sen ayırıcı tabaka olarak sekmeleri kullanarak bir. Csv dosyasına ne miktarda üreten ediyoruz.

, 'Gerçek' bir Excel dosyası oluşturmak kullanmak için PHPExcel.

Sorun Excel. Xls biten bir dosya gördüğünde, bu dosya onun BIFF standardına uymak için beklediğini olduğunu. Kodunuzu BIFF uyumlu bir dosya üretmez. Eğer isterseniz, ben BIFF uyumlu dosyaları üretmek PHP fonksiyonları ile sağlayabilir, ama burada yayınlamak için çok uzun.

Sekme ayrılmış alanları ile bir dosya oluşturma gibi görünüyor, ve bir ikili Excel kullanır gibi bu aynı biçimi olduğunu Üstbilgilerinizde iddia ediyorlar. Bu Excel'in kullandığı biçimi değil. Muhtemelen sadece kendinizi - ve elektronik tablo yükleme programı sizden insanları yanıltıcı olduğunu bildirerek edilmektedir.

Muhtemelen böyle bir CSV dosyası olarak export formatını kullanarak içine bakmak gerekir; dönüştürme virgülle ayrılmış sekme ayrılmış zor olacak değildir.

Eğer sadece bir sekme ayrılmış bir dosya oluşturmak için gidiyoruz, neden PHP ve MySQL atlamak SELECT INTO OUTFILE ile sizin için yapalım değil mi?

PHP indir bölümünü işleyebilir. / Ovaya metne Content-type başlığını ayarlayın. Excel bu açmak için nasıl bilir.

Saf CSV kullanın ve sonra. Csv ve içerik türü text / csv biten bir dosya adı olarak dosyayı tarayıcıya dönmek için kodunu değiştirin.

Ben insanlar önce bunu denemek gördük, ve sadece Office Excel belirli bazı sürümleri ile çalışır. Diğer elektronik tablo programları ile veya Excel her sürümü ile diğer platformlarda çalışmaz. Bir standart dosya formatını kullanın, ya da en azından bu dosya türü olarak tarayıcıya dosya göndermek için gidiyoruz eğer Excel beklediği şekilde XLS verileri içeren uygun bir OLE2 Bileşik Belge dosyası oluşturmak.

Sizin program çıktısı ne bütünüyle farklı bir standarda .xls belge, arıyor. Sizin program .txt dosyası bir sekme ayrılmış levha, çıktılar. Ayraç olarak virgül için sekmeleri sizin programı geçiş ve bir .csv (virgülle ayrılmış değer) olarak kaydetmeyi deneyin.

PEAR'ın (PHP uzantısı ve Uygulama Deposu) try Spreadsheet_Excel_Writer. Ben BIFF biçiminde Excel dosyalarını oluşturmak için kullanabilirsiniz.