0

我是 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;
4

2 回答 2

1

mysql查询

SELECT <column list>
FROM <table>
INTO OUTFILE '/tmp/somefilename.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'

然后重定向到文件

于 2014-03-23T08:18:27.867 回答
0

如果您收到“已发送标头”,则在发送您的 excel 标头之前您有一些输出(空格)。请确保该<?php标签是您文件中的第一个标签。

请阅读此主题:如何修复 PHP 中的“标头已发送”错误

您应该使用像这样的库http://phpexcel.codeplex.com/能够输出稳定的 excel 文件。

这是 phpexcel 的 hello world 示例:

http://phpexcel.codeplex.com/wikipage?title=Examples&referringTitle=Home

于 2013-06-25T07:35:49.843 回答