【问题标题】:Force fputcsv to enclose output in quotes强制 fputcsv 将输出括在引号中
【发布时间】:2013-12-31 01:03:12
【问题描述】:

我在网上找到了几个关于强制包含 fputcsv 输出的主题,发现这是不可能的。由于某些导入要求,我需要用引号将每个输出括起来。单独的单词有效,但非单独的作品无效。我看到有几个解决方法,但我无法让它们工作。例如,我有这样的代码:

/**
 * Writes the row(s) for the given order in the csv file.
 * A row is added to the csv file for each ordered item. 
 * 
 * @param Mage_Sales_Model_Order $order The order to write csv of
 * @param $fp The file handle of the csv file
 */
protected function writeOrder($order, $fp) 
{
    $common = $this->getCommonOrderValues($order);
    $orderItems = $order->getItemsCollection();
    $itemInc = 0;
    foreach ($orderItems as $item)
    {
        if (!$item->isDummy()) {
            $record = array_merge($common, $this->getOrderItemValues($item, $order, ++$itemInc));
            fputcsv($fp, $record, self::DELIMITER, self::ENCLOSURE);
        }
    }
}

你能帮我解决这个问题吗?

【问题讨论】:

标签: php magento csv fputcsv


【解决方案1】:

使用来自 PEAR https://pear.php.net/package/File_CSV/ 的 File_CSV 包

您的代码看起来像这样,这显然是不完整的:

<?php
require 'File/CSV.php'; 
$csv_conf = array(
    'fields' => 3, 
    'crlf' => "\r\n", 
    'quote' => '"', 
    'sep' => ','
);

$common = $this->getCommonOrderValues($order);
$orderItems = $order->getItemsCollection();
$itemInc = 0;
foreach($orderItems as $item) {
    if (!$item->isDummy()) {
        $record = array_merge(
            $common, 
            $this->getOrderItemValues($item, $order, ++$itemInc)
        );
        $res = File_CSV::write($fileName, $record, $csv_conf);
    }
}

【讨论】:

  • 感谢您的回答。但是有了这个,我必须安装一个 PEAR 包。您知道是否可以在不安装软件包的情况下执行此操作?
  • File_CSV 包几乎是独立的——它只依赖一个其他包(File 包)。下载它们并将它们复制到你的 include_path 中的某个地方,你应该没问题。
  • 我会在我的测试环境中试一试。谢谢!几天后会告诉你它是如何工作的!
  • 你知道是否可以使用这样的代码stackoverflow.com/a/4968232/1681144stackoverflow.com/a/16942836/1681144
  • 我会尽快试一试。谢谢!如果它对我有用,我会告诉你。
猜你喜欢
  • 2021-03-02
  • 2015-03-22
  • 1970-01-01
  • 2014-11-20
  • 1970-01-01
  • 2018-03-26
  • 1970-01-01
  • 1970-01-01
  • 2012-12-21
相关资源
最近更新 更多