【问题标题】:Export table to CSV file missing column info将表导出到 CSV 文件缺少列信息
【发布时间】:2018-06-26 16:24:20
【问题描述】:

我有这个脚本可以将自定义管理表导出到 CSV 文件。它完美地工作除了“Ref”列是空的。

mysql 查询为“Ref”列(0001、0002、0003...)输出正确的值,但在 CSV 文件中该列为空?你知道原因吗?

    add_action('wp_ajax_csv_pull','csv_pull_wpse_212972');

    function csv_pull_wpse_212972() {
        $arrayStatus = array(0 => 'Libero', 1 => 'Prenotato', 2 => 'Pagato');
        global $wpdb;

            $table_name = $wpdb->prefix . 'wlist_transactions';
            $tblCustomers = $wpdb->prefix . 'wlist_customers';
            $tblSpouses = $wpdb->prefix . 'wlist_spouses';

            $sql = "SELECT $table_name.ID,
                             $table_name.Ref AS Referenza,
                             $table_name.PaymentMethod AS MetodoPagamento,
                             $table_name.PaymentDate AS DataPagamento,
                             $table_name.Amount AS Totale,
                             $table_name.Status,
                             $tblCustomers.Customer as Cliente,
                             $tblSpouses.Names as Spousi,
                             $tblSpouses.Data
                             FROM $table_name
                             left join $tblCustomers on $table_name.Customer = $tblCustomers.ID
                             left join $tblSpouses on $tblCustomers.ID_Spouses = $tblSpouses.ID";

        $file = 'lista_transazioni'; 

        $results = $wpdb->get_results($sql, ARRAY_A);

        if (empty($results)) {
            return;
        }

        $csv_output = '"'.implode('";"',array_keys($results[0])).'";'."\n";;

        foreach ($results as $row) {
        $row['Status'] = $arrayStatus[$row['Status']];
            $csv_output .= '"'.implode('";"', $row).'";'."\n";
        }
        $csv_output .= "\n";

        $filename = $file."_".date("Y-m-d_H-i",time());
        header("Content-type: application/vnd.ms-excel");
        header("Content-disposition: csv" . date("Y-m-d") . ".csv");
        header( "Content-disposition: filename=".$filename.".csv");
        print $csv_output;
        exit;
    }

【问题讨论】:

  • var_dump($row); 就在您的foreach 中,您会得到什么?

标签: php wordpress export-to-csv


【解决方案1】:

此列似乎包含带有前导零的数字。要在 excel 中正确显示它们,您需要在它们前面加上一个 '

所以试试

    foreach ($results as $row) {
        $row[1] = '\''.(string)$row[1];
        $row['Status'] = $arrayStatus[$row['Status']];
        $csv_output .= '"'.implode('";"', $row).'";'."\n";
    }

也许您不需要将它们转换为字符串。

【讨论】:

  • 我也试过这个 $row['Referenza'] = '\''.(string)$row['Referenza'];但没用:(
  • 其中一个数据行中“var_dump($row)”的输出是什么?
  • array(9) { ["ID"]=> string(2) "10" ["Referenza"]=> string(5) "0003" [MetodoPagamento""]=>" 字符串(8) "Contanti" ["DataPagamento"]=> string(10) "2018-06-25" ["Totale"]=> string(4) "2000" ["Status"]=> string(9) " Prenotato" ["Cliente"]=> string(0) "" ["Spousi"]=> string(17) "Romeo e Giulietta" ["Data"]=> string(10) "2018-09-09" }
  • 这里想不出一个错误。你用excel打开csv了吗?使用普通文本编辑器打开它,检查第 2 列中的内容。
猜你喜欢
  • 2016-12-21
  • 1970-01-01
  • 2020-11-18
  • 1970-01-01
  • 2016-02-11
  • 2019-06-22
  • 2020-10-27
  • 2022-01-04
  • 1970-01-01
相关资源
最近更新 更多