我以csv格式从我的magento网站导出评论。评论包含:,;,?,!
等。通常评论都在字段中。如果评论包含;
,则会将其拆分为下一个字段。 (我使用OpenOffice电子表格打开了csv文件)
例如:
Review -> It's nice to use; looks good.
现在输出 - >
Field A-> It's nice to use
Field B-> looks good
预期产出
Field A ->It's nice to use; looks good
我使用以下标题导出为php
中的acsv文件header('Content-type: application/utf-8');
header('Content-disposition: attachment; filename="file.csv"');
如何获得预期的输出?
答案 0 :(得分:0)
我正在使用我用于将数据导出为CSV电子表格的类。诀窍是fputcsv()
,它应该正确格式化。然后,当然,你必须正确地将它导入OpenOffice(或现在的LibreOffice),但这是不同的故事。
也许它会帮助你。
<?php
class Spreadsheet {
private $grid = array();
/**
* Set cell value at position X, Y
*/
public function setCell($x, $y, $value) {
for($yy=0; $yy<=$y; $yy++) {
if(!isset($this->grid[$yy])) {
$this->grid[$yy] = array();
}
}
for($xx=0; $xx<=$x; $xx++) {
if(!isset($this->grid[$y][$xx])) {
$this->grid[$y][$xx] = null;
}
}
$this->grid[$y][$x] = $value;
}
/**
* final command executed, including "exit".
* Sends CSV to browser.
*/
public function sendAsCsv(/*string*/ $filename) {
header('Content-type: text/csv; charset=utf-8');
header('Content-Language: cs');
header('Content-Disposition: attachment; filename="' . $filename . '"');
header("Pragma: no-cache");
header("Expires: 0");
ob_end_clean();
$outputBuffer = fopen("php://output", 'w');
$this->appendToFile($outputBuffer);
fclose($outputBuffer);
exit;
}
/**
* Appends content to a file (rarely used outside this class)
*/
public function appendToFile(/*resource*/ $fileHandle) {
foreach($this->grid as $val) {
fputcsv($fileHandle, $val);
}
}
}
答案 1 :(得分:0)
我建议从另一方面解决问题 - 我认为这是Magento争论的焦点,因为有些用户想要分号。
我建议你看看你使用openoffice的方式 - 已经有一段时间但是我相信在加载csv期间有一个选项叫做“Separator options” - 改变这些选项并且一切都应该运行良好。
令人遗憾的是,如果这是正确的答案,那就是主题:-(但我希望这可以帮助你实现目标!
谢谢, // P