使用PHP生成的Excel文件发出警告

时间:2016-09-04 03:39:39

标签: php mysql excel

我有一个从MySQL数据库生成Excel文件的PHP脚本,但是,该文件在打开时会给我一个警告:

  

'excel_2016-09-04-4.xls'的文件格式和扩展名不匹配。该文件可能已损坏或不安全。除非您信任其来源,否则请勿打开它。你想打开吗?

无论如何,当我打开它时,文件没有任何错误,数据是正确的。

我似乎无法找到我的PHP代码的问题,因为Excel文件数据是正确的。

是因为header中的任何错误还是有其他问题?

PHP代码

<?php

// DB Connection

$filename = 'excel_'.date('Y-m-d');

$sql = "SELECT * from table";

$result = mysql_query($sql);
$file_ending = "xls";

ob_clean();
header("Content-Type: application/vnd.ms-excel");    
header("Content-Disposition: attachment; filename=$filename.xls");  
header("Pragma: no-cache"); 
header("Expires: 0");

//define separator (defines columns in excel & tabs in word)
$sep = "\t"; //tabbed character
//start of printing column names as names of MySQL fields
for ($i = 0; $i < mysql_num_fields($result); $i++) {
echo mysql_field_name($result,$i) . "\t";
}

print("\n");    
//end of printing column names  
//start while loop to get data
    while($row = mysql_fetch_row($result))
    {
        $schema_insert = "";
        for($j=0; $j<mysql_num_fields($result);$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";
    }   
?>

注意:我知道mysql_*函数已弃用,但这是一个测试脚本,稍后会转换为mysqli_*

0 个答案:

没有答案