2013-05-05 7 views
0

Я пытаюсь экспортировать некоторые данные в файл CSV, я получил данные, идущие в файл, это мой код:Экспорт в CSV форматирования выпуск

* Пожалуйста, простите меня, если код плохо , Я никогда не делал ничего подобного, и это был единственный способ заставить его работать.

/* CSV Export - Create Row */ 
    $csv_row_content .= $userdata->id.','; 
    $csv_row_content .= $userdata->firstname.' '.$userdata->lastname; 
    $csv_row_content .= ','.$split_date[2].'-'.$split_date[1].'-'.$split_date[0].','; 
    $csv_row_content .= $sale->name; 
     if($sale->optionlabel): 
      $csv_row_content .= ' ('.$sale->optionlabel.')'; 
     endif; 
    $csv_row_content .= ','; 
    $csv_row_content .= $sale->status.','; 
    $csv_row_content .= number_format($sale->unitprice, 2, '.', ''); 
    $csv_row_content .= "\r\n"; 

    $data_array[] = $csv_row_content; 

    $csv_file = fopen('../wp-content/plugins/data-export/export_doc.csv', 'w'); 
    foreach ($data_array as $single_line) 
     { 
    fputcsv($csv_file,split(',',$single_line)); 
     } 
    fclose($csv_file); 

    /* Clear Array */ 
    unset($data_array); 
    $data_array = array(); 

Это работает только у меня возникают проблемы с кавычками на определенных элементах

303,"User Name",12-02-2013,"College Sweater (Black)",,"20.00 
    207","User Name",30-01-2013,"College Sweater (Black)",,"20.00 
    " 

Так что я не уверен, что ОХ с первыми и последними пунктами, то одна кавычки иногда появляются, а не в других. Обратите внимание на нечетную кавычку в строке id 207 & на последнее значение для обеих строк. Также есть новая строка, начинающаяся на третьей строке с помощью только одной кавычки.

Также на некоторых других элементах функция разделяет имя предмета на два элемента. например:

207","User Name",30-01-2013,"College ","Sweater (Black)",,"22.73 

Так, очевидно, я уезжаю базу где-то здесь, если кто-нибудь может мне помочь с этим, я действительно заинтересован в изучении правильный путь такого рода вещи должно быть сделано, проверил php.net docs совсем немного, но много раз я нахожу этот ресурс невероятно подавляющим, и это один из таких случаев.

Если кто-нибудь может указать мне в правильном направлении, я бы очень признателен. Я бы предпочел понять это, а не просто иметь копию и вставить решение.

Спасибо, Frank

ответ

1

Вы вручную создать строку CSV и разделив его перед использованием fputcsv положить его обратно вместе. Попробуйте вместо этого:

$row = array(
    $userdata->id, 
    $userdata->firstname . ' ' . $userdata->lastname, 
    $split_date[2] . '-' . $split_date[1] . '-' . $split_date[0], 
    $sale->name . ($sale->optionlabel ? $sale->optionlabel : ''), 
    $sale->status, 
    number_format($sale->unitprice, 2, '.', '') 
); 

$data[] = $row; 

$csv_file = fopen('../wp-content/plugins/data-export/export_doc.csv', 'w'); 

foreach ($data as $line) { 
    fputcsv($csv_file, $line); 
} 
fclose($csv_file); 

Это создает массив, содержащий все поля, которые могут быть переданы в fputcsv, который заботится о ограждающих и разграничении полей, а также линии окончаний.

+0

идеальный чувак, это для этого, очень ценится. – frankstuner

+0

О, спасибо кучам за простое/понятное объяснение! – frankstuner