2014-09-12 5 views
0

좋아, 이제 phpexcel 예제를 읽었습니다. 적절한 xls 파일을 만들기 위해 페이지에 다른 결과물이 없어야합니다. 내가PHPexcel 문제

echo "some output and my form for query"; 
      $objPHPExcel = new PHPExcel(); 
      $objPHPExcel->getProperties()->setCreator("Administrator"); 
      $objPHPExcel->getProperties()->setLastModifiedBy("Administrator"); 
      $objPHPExcel->getProperties()->setTitle("test"); 
      $objPHPExcel->getProperties()->setSubject("test"); 
      $objPHPExcel->getProperties()->setDescription("test"); 

      $objPHPExcel->setActiveSheetIndex(0); 
      $objPHPExcel->getActiveSheet()->SetCellValue('A1', 'Hello'); 
      $objPHPExcel->getActiveSheet()->SetCellValue('B2', 'world!'); 
      $objPHPExcel->getActiveSheet()->SetCellValue('C1', 'Hello'); 
      $objPHPExcel->getActiveSheet()->SetCellValue('D2', 'world!'); 

      $objPHPExcel->getActiveSheet()->setTitle('Simple'); 

      $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 
      // Redirect output to a client’s web browser (Excel5) 
      header('Content-Type: application/vnd.ms-excel'); 
      header('Content-Disposition: attachment;filename="01simple.xls"'); 
      header('Cache-Control: max-age=0'); 
      // If you're serving to IE 9, then the following may be needed 
      header('Cache-Control: max-age=1'); 

      // If you're serving to IE over SSL, then the following may be needed 
      header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past 
      header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified 
      header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1 
      header ('Pragma: public'); // HTTP/1.0 
echo"some other code"; 

을 가지고 XLS를 얻을 때, 그것이 거기에 CSS를 링크가 doen't 경고를 가지고 있기 때문에 나는 그렇게 생각하고 또한 그러한 엑셀 파일에 링크로! 세계 안녕하세요 제외하고 텍스트를 많이두고 . 은 다음과 같습니다 Output in excel

나는 다른 PHP 파일에 XLS 모든 작업을 넣어 아약스와 그것을 얻을,하지만 내가 어떻게이 파일에 쿼리의 결과를 얻을 수 있습니다? 데이터베이스에 대한 다중 연결을 원하지 않기 때문에 모든 쿼리가 내 주 파일에 있어야합니다. 어떻게 분명해, 내가 원하는거야. 조언?

+1

당신은, 당신이 바로 출력을 에코 및 엑셀로 파일을 보낼 수 없습니다 것 같은 요청으로 다운로드 할 브라우저. 그렇지 않으면 MS Excel이 제대로 읽을 수 없도록 Excel 형식 파일이 손상됩니다. 당신은 하나의 요청으로 ___either___ HTML 마크 업, ___or___ 엑셀 파일을 생성하지만, 둘 다 생성하지는 않습니다. 이것은 PHPExcel 문제가 아닙니다. http 문제입니다. .... 요청을 생성해야한다면 동일 할 것입니다. 이미지 파일 또는 pdf 또는 데이터의 zip 아카이브 .... 요청 당 단 하나의 파일 형식 –

+0

설명해 주셔서 감사합니다. 어떤 아이디어가 문제를 해결하는 방법? –

+0

해결 방법은 각 요청마다 하나의 응답 유형 만 보내는 것입니다. 각 요청이 데이터베이스에서 데이터를 읽지 않아도된다는 의미 일지라도 –

답변

0

xls (x) 파일을 다운로드하려면 잘못된 스트림을 방지하기 위해 올바른 헤더를 설정하고 버퍼를 정리해야합니다. 문서로 는이 코드를 시도 할 수 있습니다 설명 :

//------------- Enter your code before this line --------- // 

// Cleaning buffer 
ob_clean(); 

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 

/* Or you can use 
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
*/ 

// redirect output to client browser 
header('Content-Type: application/vnd.ms-excel'); 
header('Content-Disposition: attachment;filename="your_filename.xls"'); 
/* Use this for Writer Excel2007  
header('Content-Disposition: attachment;filename="your_filename.xlsx"'); 
*/ 
header('Cache-Control: max-age=0'); 

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

당신은 PHPExcel의 개발자 용 문서에 대해서는, here을 참조 할 수 있습니다