我需要将mysql表导出为Excel格式。我试过但仍然无法获得正确的格式。任何人都可以帮我解决这个问题。我在下面附上了我的php函数。
<body>
<?php
function export_excel_csv()
{
$conn = mysql_connect("localhost","itsup739_uaquiz","itsup739_uaquiz");
$db = mysql_select_db("itsup739_uaquizDB",$conn);
$sql = "SELECT * FROM results";
$rec = mysql_query($sql) or die (mysql_error());
$num_fields = mysql_num_fields($rec);
for($i = 0; $i < $num_fields; $i++ )
{
$header .= mysql_field_name($rec,$i)."\\t";
}
while($row = mysql_fetch_row($rec))
{
$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 No Record Found!\n";
}
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=reports.xls");
header("Pragma: no-cache");
header("Expires: 0");
print "$header\\n$data";
//echo $header;
}
export_excel_csv();
?>
请点击链接查看输出。
答案 0 :(得分:4)
导出到excel实际上真的很容易。
只需将此内容创建为普通的HTML表格,如下所示:
$contents = '<table>
<tr>
<td>Row 1</td>
<td>Row 2</td>
</tr>
<tr>
<td>bLAH BLAH</Td>
<td>Blah Blah</td>
</tr>
</table>';
现在将标题设置为excel文档并输出表格:
$filename = 'my_excel_file.xls';
header( 'Content-type: application/ms-excel' );
header( 'Content-Disposition: attachment; filename=' . $filename );
echo $contents;
这就是它。
答案 1 :(得分:0)
,
或;
)。\t
和\n
的反斜杠。因此,这些不代表制表符或换行符。fputcsv()
将您的行写入文件(或标准输出),默认情况下将使用Excel理解的CSV格式。答案 2 :(得分:0)
您的代码包含许多错误。
<body>
标记会产生警告Cannot modify header information
。标题不会被设置为在第一行本身开始的输出。Content-type: text/csv