0

fputcsv を使用して csv を作成していますが、Excel で開くと出力されるデータが 3 行目から始まります。どうしてこれなの?

fputcsv を使用して列ヘッダーの行を作成したいのですが、これを行う最善の方法は何ですか?

public function indexAction()
    {
        $this->outputCSV();
        //$this->view->navigation = $navigation = Engine_Api::_()->getApi('menus', 'core')->getNavigation('passport_admin_main', array(), 'passport_admin_main_outofarea');
        $this->_helper->layout()->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);

        header('Content-Disposition: attachment; filename="OutOfAreaReport.csv"');
        header('Content-type: application/excel');
        readfile('OutOfAreaReport.csv');
    }

    public function outputCSV(){
        $list = array (
                array('aaa', 'saasasbbb', 'ccdddc', 'dddd')
                );
        $fp = fopen('php://output', 'w');

        foreach ($list as $fields) {
            fputcsv($fp, $fields);
        }

        fclose($fp);
    }
4

2 に答える 2

5

にデータを書き込んでいるのでphp://output、ダウンロード用のファイルを提供していると思いますか?

さて、ファイルの余分な新しい行はスクリプトのさらに上から来ています、あなたはすでにそれらを出力しています。

<?phpここで最も一般的な原因は、スクリプトの開始タグの前に空白を挿入することです。

間違い:



<?php
  //ここにあなたのコード

右:

<?php
  //ここにあなたのコード

編集これはあなたが含めたすべてのファイルにも当てはまることを私に思い出させてくれた@SDCに感謝します。?>これらのファイルの場合、スクリプトが正しく機能する必要がないため、終了タグの後に空白がないことを確認するか、できれば終了タグを完全に削除する必要があります。

于 2012-08-15T16:15:34.100 に答える
5

これが回答済みとしてマークされていることは知っていますが、同様の問題に遭遇したとき、多くのインクルードがあったため、ob_clean; を追加しました。バッファをクリアすると、スペースの問題が解決しました。例:

パブリック関数 outputCSV(){

$list = array ( array('aaa', 'saasasbbb', 'ccdddc', 'dddd') );

//add here  
ob_clean;
   $fp = fopen('php://output', 'w');

   foreach ($list as $fields) {
       fputcsv($fp, $fields);
   }

   fclose($fp);

}

于 2014-07-17T18:56:45.437 に答える