2

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);
        }
    }
}

これを機能させるために私を助けてもらえますか?

4

1 に答える 1

0

https://pear.php.net/package/File_CSV/にある PEAR の 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);
    }
}
于 2013-12-12T15:27:38.463 に答える