【发布时间】:2012-04-19 11:11:56
【问题描述】:
我要导出 CSV 文件,分隔符是“,”逗号,但如果列内容有逗号,则会出现问题,在查看 libre office calc 时会破坏 csv 输出。
如果有人可以帮我解决这个问题
到现在为止
//$filename = $row['fileName'].'-ConsignmentInfo.csv';
$filename="test.csv";
$delim = ',';
$columns = array('0Product_Number', 'Product_Name', 'Alternative_Title');
echo implode($delim,$columns )."\n";
$ptr1 = DD_Db::fetch("SELECT p.pNum,p.pName,a.varcharValue FROM ds_products p left join productAttribute a on a.id=p.pID where a.attributeId= (select id FROM attribute where attributeName='alternateTitle') ");
foreach ($ptr1 as $row) {
$line = array("\"{$row['pNum']}\"","\"{$row['pName']}\"","\"{$row['varcharValue']}\"");
echo implode($delim,$line)."\n";
}
header('Content-Type: text/csv');
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header('Content-Disposition: attachment; filename='.$filename);
header('Pragma: cache');
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
exit;
【问题讨论】:
-
如果这是 Perl,我会说“使用 Text::CSV”……PHP 没有可用的 CSV 库吗?轮子改造通常不是一个好主意,而 CVS 生成是一个很常见的轮子。