保存生成的Excel而不是下载

时间:2013-12-07 14:37:58

标签: php save export-to-excel

目标是将表中的数据从数据库映射到excel文件。代码能够做到这一点,但我想在此发布一些脚本并稍后下载。但它在这个页面加载时下载。有没有办法保存从mysql数据库导出的excel文件而不是下载它?代码如下: -

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');

$DB_Server = "localhost"; //MySQL Server    
$DB_Username = "xxxx"; //MySQL Username     
$DB_Password = "xxxx";             //MySQL Password     
$DB_DBName = "xxxx";         //MySQL Database Name  
$DB_TBLName = "xxxx"; //MySQL Table Name   
$filename = "output";         //File Name



//create MySQL connection  
$Connect = mysqli_connect($DB_Server, $DB_Username, $DB_Password, $DB_DBName) or die("Couldn't connect to MySQL:<br>" . mysql_error() . "<br>" . mysql_errno());



//execute query 
$sql = "Select * from $DB_TBLName";
$result = mysqli_query($Connect,$sql) or die("Couldn't execute query:<br>" . mysql_error(). "<br>" . mysql_errno());

$file_ending = "xls";

//header info for browser
header("Content-Type: application/xls");  
header("Content-Disposition: attachment; filename=$filename.xls");  
header("Pragma: no-cache"); 
header("Expires: 0");



for ($i=0;$i<=13;$i++)
{
    $column_name[$i] = $result->fetch_field_direct($i);
    echo $column_name[$i]->name."\t";

}

print("\n");

while($row = mysqli_fetch_row($result))

    {

        $schema_insert = "";

        for($j=0; $j<14;$j++)

      {

            if(!isset($row[$j]))

                $schema_insert .= "NULL".$sep;

           elseif ($row[$j] != "")

                $schema_insert .= "$row[$j]".$sep;

            else

                $schema_insert .= "".$sep;

        }

        $schema_insert = str_replace($sep."$", "", $schema_insert);

    $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert);

        $schema_insert .= "\t";

        print(trim($schema_insert));

        print "\n";

    }



?>

2 个答案:

答案 0 :(得分:0)

如果你想更多地使用Excel文件,那么你应该看看PHPExcel。它没有最干净的PHP,但工作得很好。

使用代码,可以使用函数file_put_contents或SplFileObject类。

答案 1 :(得分:0)

您发送的标头可能会强制浏览器将响应下载为文件。您可以考虑将结果保存到场景后面的磁盘,然后将页面重定向到其他位置。