PHPExcel生成完全顶升的输出

问题描述

| 问候, 我在弄清楚如何正确地一般使用PHP以及特别是PHPExcel时遇到了麻烦。我已经阅读了有关该主题的多篇文章,但我一直在圈子里跑来跑去。这是我顶起的代码的相关部分:
$viewinv = MysqL_connect($sqlsrv,$username,$password);
if (!$viewinv) { die(\'Could not connect to sql server. Contact administrator.\'); }
MysqL_select_db($database,$viewinv) or die(\'Could not connect to database. Contact administrator.\');
$query = \"select unit_id,config,location from inventory;\";
$result = MysqL_query($query);

if ($result = MysqL_query($query) or die(MysqL_error())) {
   $objPHPExcel = new PHPExcel();
   $objPHPExcel->getActiveSheet()->setTitle(\'blah\');

$rowNumber = 1;
$headings = array(\'Unit ID\',\'Config\',\'Location\');
$objPHPExcel->getActiveSheet()->fromArray(array($headings),NULL,\'A\'.$rowNumber);
$rowNumber++;
while ($row = MysqL_fetch_row($result)) {
   $col = \'A\';
   foreach($row as $cell) {
      $objPHPExcel->getActiveSheet()->setCellValue($col.$rowNumber,$cell);
      $coL++;
   }
   $rowNumber++;
}
   $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,\'Excel2007\');

   header(\'Content-Type: application/vnd.ms-excel\');
   header(\'Content-disposition: attachment;filename=\"myFile.xls\"\');
   header(\'Cache-Control: max-age=0\');

   $objWriter->save(\'PHP://output\');
   exit();
}
echo \'a problem has occurred... no data retrieved from the database\';
PHPExcel肯定是从查询输出数据,我可以看到一点点的纯文本,但是它周围环绕着大量的随机字符,就好像我在查看压缩或编译的数据的内容一样。 例如:
PKâh¿>G’D²Xð[Content_Types].xml­”MNÃ0…÷œ\"ò%nY „švAa •(0ö¤±êØ–gúw{&i‰@ÕnbEö{ßøyìÑdÛ¸l mð¥‘×ÁX¿(ÅÛü)¿’òF¹à¡;@1_滘±Øc)j¢x/%ê…Eˆày¦ 
任何指针将不胜感激     

解决方法

        通过将正确的编写器类型与正确的内容类型和文件扩展名匹配,可以解决该问题。 XLSX(Office 2007以上版本):
Writer      : Excel2007 (PHPExcel_Writer_Excel2007)
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
XLS(在Office 2007之前):
Writer      : Excel5 (PHPExcel_Writer_Excel5)
Content-Type: application/vnd.ms-excel
    ,        您的问题肯定是输出的内容不仅仅是Excel数据(包含在输出缓冲区中)。 要解决您的问题,只需致电
  ob_clean(); //this will clean the output buffer
在发送标题之前。