0

これは私のexport_to_excelヘルパーのコードです:

function export_to_excel($query, $filename='exceloutput')
{
    $headers = ''; // just creating the var for field headers to append to below
    $data = ''; // just creating the var for field data to append to below

    $obj =& get_instance();

    $fields = $query->list_fields();

    if ($query->num_rows() == 0) {
        echo '<p>The table appears to have no data.</p>';
    } else {
        foreach ($fields as $field) {
           $headers .= $field . "\t";
        }

        foreach ($query->result() as $row) {
            $line = '';
            foreach($row as $value) {                                            
                if ((!isset($value)) OR ($value == "")) {
                    $value = "\t";
                } else {
                    $value = str_replace('"', '""', $value);
                    $value = '"' . $value . '"' . "\t";
                }
                $line .= $value;
            }
            $data .= trim($line)."\n";
        }

        $data = str_replace("\r","",$data);

        header("Content-type: application/x-msexcel; charset=utf-8");
        header("Content-Disposition: attachment; filename=$filename.xls");
        echo "$headers\n$data";
    }
}

ローカルホストとサーバーで異なる結果が得られます。localhostでコードを実行すると、問題なく適切な結果が出力されますが、サーバーでコードを実行すると、localhostと同じ結果が得られますが、次のようにエラーを含む2行(Excel行)が追加されます。

<br />
<b>Fatal error</b>: ob_start()
[&lt a href='ref.outcontrol'&gt ref.outcontrol&lt/a&gt]:
Cannot use output buffering in output buffering display handlers in
<b>/home/username/public_html/Codeigniter_website/system/core/Exceptions.php</b>
on line <b>181</b><br />

解決策はありますか?

これはほとんど大規模なプロジェクトであり、ローカルとサーバーの違いはこれだけです。

4

1 に答える 1

4

解決策は、目的の出力の後に出力と解析が停止することを確認することです。

exit;後を置くことによって行うことができますecho "$headers\n$data";

于 2012-02-26T18:53:15.530 に答える