2013-02-25 4 views
0

У меня есть небольшой скрипт PHPExcel, который выводит файл Excel, проблема в том, что, открыв его с сервера, я могу открыть его без проблем. Но когда я загружаю его через заголовок в браузере, он не работает.PHPExcel Invalid File Created

Я искал проблему в Интернете, но я не нашел ничего, что помогло мне, я попытался с ob_clean() ;, я проверил, является ли спецификация проблемой, ничего не получилось.

Поэтому я надеюсь, что у некоторых из вас есть идея ONE, которая позволит моему скрипту работать.

$this->objPHPExcel = $this->objReader->load($this->newFilePath); 
    $objWorksheet = $this->objPHPExcel->getActiveSheet(); 
    $objWriter = PHPExcel_IOFactory::createWriter($this->objPHPExcel, 'Excel2007'); 
    //Adding IO General Overhead 
    foreach($this->sums as $sumkey => $sumval){ 
     foreach($sumval as $keys => $vals){ 
      foreach($vals as $key => $val){ 
       $objWorksheet->setCellValueByColumnAndRow($key, $offset[$sumkey][$keys], $val); 
      } 
     } 
     $objWriter->save($this->newFilePath); 
    } 

    ob_clean(); 

    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 


    // It will be called file.xls 
    header('Content-Disposition: attachment; filename="'.$this->newFilePath.'"'); 

    header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
+0

Как всегда .... открыть файл в текстовом редактор и проверить любые ведущие/конечные пробелы (включая маркер спецификации) или любые очевидные сообщения об ошибках открытого текста в потоке данных .... Я должен повторять это так часто, мне действительно нужно настроить макрос для него –

+0

Но глядя на ваш код, куда вы отправляете файл в браузер? Вам либо нужно сохранить на php: // вывод __after__ отправки заголовков; или readfile ($ this-> newFilePath) после отправки заголовков –

ответ

0

Посмотрите на 01simple-скачать-xlsx.php в/Tests или/Примеры для образца кода, который делает то, что вы хотите:

$this->objPHPExcel = $this->objReader->load($this->newFilePath); 
    $objWorksheet = $this->objPHPExcel->getActiveSheet(); 
    $objWriter = PHPExcel_IOFactory::createWriter($this->objPHPExcel, 'Excel2007'); 
    //Adding IO General Overhead 
    foreach($this->sums as $sumkey => $sumval){ 
     foreach($sumval as $keys => $vals){ 
      foreach($vals as $key => $val){ 
       $objWorksheet->setCellValueByColumnAndRow($key, $offset[$sumkey][$keys], $val); 
      } 
     } 
    } 


    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 


    // It will be called file.xls 
    header('Content-Disposition: attachment; filename="'.$this->newFilePath.'"'); 

    header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 

     $objWriter->save('php://output');