1

PHPExcel on Zend を使用して、UTF-8 でエンコードされたデータを含む Excel レポートを作成しています。ダウンロードして Excel で開こうとすると、ローカル環境で動作しますが、次のエラーが発生します: ライブ サーバー/運用環境から「ファイル形式が正しくありません」。ヘルプ/リファレンスをいただければ幸いです。

xlsファイルをダウンロードするために使用したコードは次のとおりです。

public function getCsv($data, $filename = false)
 {
     /**
      * generate a file name using unixTimeStamp
      * @var string $tmpfname
      */
      if ($filename)
      {
          $tmpfile =    "/tmp/".$filename. "-". date('Y-m-d_H:i:s') . ".csv";
          $name = str_replace(' ','',$filename)."-".date('Y-m-d_H:i:s') . ".xls";
      }
      else
      {
          $tmpfile = "/tmp/report". "_". date('Y-m-d_H:i:s') . ".csv";
          $name = "report-".date('Y-m-d_H:i:s') . ".xls";
      }
      /**
       * open Temporary file name in write mode
       * @var object $fp
       */
       $fp = fopen($tmpfile, "w");
       /**
        * foreach datas write to csv
        */
       foreach ($data as $fields)
           fputcsv($fp, $fields, ',', '"');

       /**
        * close file
        */
        fclose($fp);

        try
        {
            $objReader = PHPExcel_IOFactory::createReader('CSV');
            $objPHPExcel = $objReader->load($tmpfile);
            $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

            //set Header Content Type as application/csv
            header("Content-Type: application/vnd.ms-excel; charset=utf-8");
            header("Content-Disposition: attachment; filename=$name");
            $objWriter->save('php://output');
        }
        catch (Exception $e)
        {
            echo $e->getMessage();
        }

        exit;
    }
4

1 に答える 1

0

保存する前に、次の行を使用する必要があります。

ob_end_clean();
于 2014-02-19T16:11:20.480 に答える