PHPExcel 打开下载文件时出错 "incorrect file format"



我正在创建一个使用Zend上的phpexcel的Excel报告,其中包含UTF-8编码数据。当我下载并试图在Excel中打开它时,它在本地环境上工作,但是我会遇到以下错误:实时SEVER/生产中的"错误文件格式"。任何帮助/参考都将不胜感激。

这是我用于下载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;
    }

保存之前必须使用此行:

ob_end_clean();

最新更新