导出CSV正在跳过第一行结果

时间:2017-11-13 11:30:07

标签: php mysql csv export-to-excel

我们建立了一个在线应用程序,我们的客户可以从表中过滤结果,并将结果导出为CSV。

问题是当我将其导出为CSV时,它总是会跳过结果的第一行。

以下是printcsv.php的代码

$noheader = 1;
$protected = 1;

if(isset($_POST['query']) && $_POST['query'] != ''){
    $_GET['query'] = $_POST['query'];
}

if (isset($_GET['query'])){

    if(strpos($_GET['query'], 'limit')) {
        $_GET['query'] = substr($_GET['query'], 0, strpos($_GET['query'], 'limit'));
    }

    include('system/system.php');

    $results = SQLselectRA(stripslashes($_GET['query']));

    $x = 0;

    header('Content-Type: application/excel');
    header('Content-Disposition: attachment; filename="printcsv.csv"');
    $file = fopen("php://output","w");
    $header = array();

    foreach($results as $keyvalue => $row) {    
        if($x == 0) {
        foreach($row as $key => $data) {
            $header[]= str_replace('_', ' ', strtoupper($key));
        }
        $row = $header;
    }
    fputcsv($file, $row);
    $x++;
    }

如果有人可以帮助我,那就太好了。

此致

1 个答案:

答案 0 :(得分:2)

您应该使用除$row之外的其他变量来编写标题数据,该变量包含第一行数据,但是在设置标题时会覆盖

foreach($results as $keyvalue => $row) {    
    if($x == 0) {
        foreach($row as $key => $data) {
            $header[]= str_replace('_', ' ', strtoupper($key));
        }
        fputcsv($file, $header);
    }
    fputcsv($file, $row);
    $x++;
}