我正在尝试将一些数据导出到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和amp;上的奇数引号。在两行的最后一个值上。 还有一个新行开始在第三行开始,只有一个引号。
此外,在其他一些项目中,该功能将项目名称分为两个项目。例如:
207","User Name",30-01-2013,"College ","Sweater (Black)",,"22.73
所以显然我已经离开这里了,如果有人可以帮我这个,我真的很想学习正确的方法应该做这件事,检查php.net文档相当多,但是很多时候我发现这种资源令人难以置信的压倒性的,这就是这样的场合。
如果有人能指出我正确的方向,我真的很感激。 我更愿意理解这一点,而不仅仅是复制和粘贴解决方案。
谢谢, 弗兰克
答案 0 :(得分: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
的字段的数组,该字段负责封闭和分隔字段以及行结尾。