簡體   English   中英

導出PHP CSV文件列未顯示

[英]Export PHP CSV File Columns not displayed

下面的代碼正確地從mysql表中導出數據,但列名未顯示在輸出的csv文件中。 請幫忙

if(isset($_POST["export"])){
    $branchcode=$_POST['branchcode'];
    $start=$_POST['start'];
    $end=$_POST['end'];
    $sql=mysqli_query($conn,"select tk_file,tk_date,userid,tk_from,tk_to from rfc_timekeeping_history where branchcode='$branchcode' and (tk_date between '$start' and '$end');")or die(mysqli_error());
    $output = "";
    $columns_total =    mysqli_num_fields($sql);
    for ($i = 0; $i < $columns_total; $i++) {
    $heading =  mysqli_fetch_fields($sql, $i);
    $output .= '"'.$heading.'",';
    }
    $output .="\n";
    while ($row = mysqli_fetch_array($sql)) {
    for ($i = 0; $i < $columns_total; $i++) {
    $output .='"'.$row["$i"].'",';
    }
    $output .="\n";
    }
    $filename = "myFile.csv";
    header('Content-type: application/csv');
    header('Content-Disposition: attachment; filename='.$filename);
    echo $output;
    exit;
}

使用標准php方法寫入csv文件( fputcsv )和使用stdout流的fputcsv一種方法,您可以嘗試以下方法。 在倒退記錄集以實際處理記錄集數據之前,在第一個循環中獲取列名。

<?php

    if( isset( $_POST["export"], $_POST['branchcode'], $_POST['start'], $_POST['end'] ) ){

        $filename = "myFile.csv";
        $branchcode=$_POST['branchcode'];
        $start=$_POST['start'];
        $end=$_POST['end'];



        /* store columns names in this array */
        $headers=array();

        /* Run the query */
        $sql = mysqli_query( $conn, "select `tk_file`,`tk_date`,`userid`,`tk_from`,`tk_to` from `rfc_timekeeping_history` where `branchcode`='{$branchcode}' and ( `tk_date between` '{$start}' and '{$end}');")or die(mysqli_error());

        /* fetch the fields */
        $fields = mysqli_fetch_fields( $sql );

        /* add each column name to the array */
        foreach( $fields as $field ) {
            $headers[]=$field->name;
        }


        /* establish basic csv formatting parameters */
        $delimiter=',';
        $enclosure='"';

        /* write output to stdout */
        $output=fopen('php://output','w+');
        fputcsv( $output, $headers, $delimiter, $enclosure );

        /* rewind the recordset to begin processing data */
        mysqli_data_seek( $sql, 0 );

        /* process each row - add to stdout */
        while( $row = mysqli_fetch_array( $sql ) ) {
            fputcsv( $output, $row, $delimiter, $enclosure );
        }

        /* close stdout stream */
        fclose( $output );

        /* send the data */
        header("Content-Type: application/csv");   
        header("Content-Disposition: attachment; filename={$filename}");  
        ob_flush();
        exit();
    }

?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM