错误:用php和mysql导出到excel

时间:2015-01-15 19:24:15

标签: php phpexcel

我正在尝试将数据从Mysqlphp导出到Excel文件。

但是出了点问题。

这是我的代码:

<?php
header('Content-Type: text/html; charset=UTF-8'); 
session_start();

if(!isset($_SESSION['usuario'])) 
{
  header('Location: login.php');  
}

require('../conexion.php');
  $conexion = conexion();

    if (mysqli_connect_errno()) 
    {
        printf("La conexión con el servidor de base de datos falló: %s\n", mysqli_connect_error());
        exit();
    }

    $consulta =  $_SESSION['query'];
    echo $consulta; //consulta = SELECT * FROM cotion where status= 'Vea' 
    $resultado = mysql_query ($consulta, $conexion) or die (mysql_error ());
 $registros = mysql_num_rows ($resultado);

 if ($registros > 0) {
   require_once 'excel/Classes/PHPExcel.php';
   $objPHPExcel = new PHPExcel();

   //Informacion del excel
   $objPHPExcel->
    getProperties()
        ->setCreator("Creator")
        ->setLastModifiedBy("setLastModifiedBy")
        ->setTitle("tittle")
        ->setSubject("Subject")
        ->setDescription("Description")
        ->setKeywords("Keywords")
        ->setCategory("Category");    

   $i = 1;    
   while ($registro = mysql_fetch_object ($resultado)) {

      $objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A'.$i, $registro->pais);

      $i++;

   }
}
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="ex.xlsx"');
header('Cache-Control: max-age=0');

$objWriter=PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007');
$objWriter->save('php://output');
exit;
mysql_close ();
?>

但我只能看到它:

enter image description here

但我没有在excel文件中看到它,我在网络浏览器中看到它。

我查看了here来执行我的导出,并从here下载PHPExcel课程

对Ido会有什么看法?

谢谢

1 个答案:

答案 0 :(得分:1)

请注意Redirecting output to a client’s web browser上PHPExcel开发人员文档部分中的caution

  

<强>注意:

     
      
  • 确保不包含任何echo语句或输出除Excel文件之外的任何其他内容。在开始<?php标记之前应该没有空格,在结束?>标记之后最多只有一个换行符(为了避免问题,也可以省略)。
  •   
  • 确保保存脚本时没有BOM(字节顺序标记)。 (因为这算作回声输出)
  •   
  • 同样适用于所有包含的文件
  •   

另请注意,如果您使用的是某种框架,则可能会发送不同的标头或生成其他输出。大多数框架都提供了一些允许您覆盖该行为的机制。