我是PHP的新手,需要帮助才能使用PHP将所选内容从Mysql Table导出到MS Excel。我只需点击一个按钮或链接即可完成此操作。
下面是我到目前为止所做的一段代码,但我一直收到警告“无法修改标题信息 - 标题已经发送”。还建议一个单击按钮\链接导出表的好方法。感谢
//Export Contents
$header = '';
$data = '';
$fields = mysql_num_fields($sql);
//fetch header
for($i=0; $i < $fields; $i++)
{
$header .= mysql_field_name($sql, $i)."\t";
}
//fetch data each row, store on tabular row data
while($row = mysql_fetch_row($sql))
{
$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);
}
//Naming the excel sheet
$name = $customerFilter."_".date('d-m-y').".xls";
header("Content-type:application/vnd.ms-excel;name='excel'");
header("Content-Disposition: attachment; filename=$name");
header("Pragma: no-cache");
header("Expires: 0");
//Output Data
echo $header."\n\n".$data;
答案 0 :(得分:1)
mysql查询
SELECT <column list>
FROM <table>
INTO OUTFILE '/tmp/somefilename.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
然后重定向到文件
答案 1 :(得分:0)
如果您有“已发送的标头”,则在发送Excel标头之前会有一些输出(空格)。请确保<?php
标记是您文件中的第一个标记。
请阅读此主题:How to fix "Headers already sent" error in PHP
您应该使用像http://phpexcel.codeplex.com/这样的库来输出稳定的Excel文件。
这是phpexcel的一个hello world示例:
http://phpexcel.codeplex.com/wikipage?title=Examples&referringTitle=Home