<?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";
?>上面的代码用于从MySQL数据库生成Excel电子表格,但是我们得到了以下错误:
您要打开的文件'users.xls‘与文件扩展名指定的格式不同。在打开该文件之前,请验证该文件未损坏,并且来自可信来源。现在要打开文件吗?
问题是什么,我们如何解决?
发布于 2010-04-26 16:01:31
您并不是真正生成Excel文件。使用选项卡作为分隔符,生成相当于.csv文件的内容。
若要生成“真实的”Excel文件,请使用PHPExcel。
发布于 2010-04-26 13:28:31
问题是,当Excel看到以.xls结尾的文件时,它希望该文件符合其BIFF标准。您的代码不生成符合BIFF的文件。如果您愿意,我可以为您提供生成符合BIFF的文件的PHP函数,但是在这里发布太长了。
发布于 2010-04-26 13:29:27
您似乎正在生成一个带有选项卡分隔字段的文件,并且在标题中声明这是与二进制Excel电子表格使用的格式相同的格式。这不是Excel使用的格式。加载电子表格的程序让你知道你在误导别人--可能只是你自己。
您可能应该考虑使用导出格式,如CSV文件;从制表符分隔到逗号分隔的转换并不困难。
https://stackoverflow.com/questions/2713562
复制相似问题