使用PHP创建CSV文件

时间:2011-04-11 04:03:39

标签: php

PHP - 我已阅读并使用了许多答案,但我一直在获取HTML 该页面也是如此,我该如何制止!!或者我只是愚蠢,不,不 回答。 (新的格式化版本,抱歉伙计!!!)

以下是代码:

function WriteCSVFile( $csvArr, $nLine )  
{  
    header( "Content-type: text/csv" );  
    header( "Content-Disposition: attachment; filename=file.csv" );  
    header( "Pragma: no-cache" );  
    header( "Expires: 0" );  
    header( "Cache-control: private" );  
    header( "Cache-control: must-revalidate, post-check=0, pre-check=0" );  

    for( $nLoop = 0; $nLoop <= $nLine; $nLoop++ )  
        echo $csvArr[$nLoop];  
}

3 个答案:

答案 0 :(得分:1)

在输出任何标题之前,您正在循环使用以下内容:

for( $nLoop = 0; $nLoop <= $nLine; $nLoop++ )
    echo $csvArr[$nLoop] . "<br />";

坚持header()

之后

修改

正如我之前所做的那样,你改变了它,我仍然会让for循环停止。我要指出的一件事是你正在呼叫function WriteCSVFile( $csvArr, $nLine )

但是你永远不会告诉我们这个fn()是如何被调用的,可能是在这个函数输出之前有一些东西,因此你有html,如果你已经输出了一些东西,那么你的标题就不重要了

检查输出内容(HTML是什么?)然后在php代码中搜索确切的html。

答案 1 :(得分:0)

for( $nLoop = 0; $nLoop <= $nLine; $nLoop++ )
    echo $csvArr[$nLoop] . "\n";

如果$csvArr的项目本身就是数组,您可能希望implode()将值设置为一行

for( $nLoop = 0; $nLoop <= $nLine; $nLoop++ )
    echo implode(',', $csvArr[$nLoop]) . "\n";

答案 2 :(得分:0)

请尝试。

header("Content-type: application/csv");

或者在调用WriteCSVFile函数之前检查是否有任何输出。如果是这样,它将返回错误,说不能修改标题信息。