Экспорт таблицы в файл CSV отсутствует информация столбца - PullRequest
0 голосов
/ 26 июня 2018

У меня есть этот скрипт для экспорта пользовательской таблицы администратора в файл 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;
    }

1 Ответ

0 голосов
/ 26 июня 2018

Кажется, что этот столбец содержит числа с ведущими нулями. Чтобы правильно отобразить их в Excel, вы должны поставить перед ними префикс '

Так что попробуйте

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

Может быть, вам не нужно приводить их в строку.

...