2011-06-14 15 views
10

Me estoy golpeando la cabeza contra una pared tratando de descubrir por qué no puedo obtener PHPExcel para generar un archivo csv. Por extraño que parezca, esto funciona en Internet Explorer, se emite como csv, pero en todos los demás navegadores que intento se lo da como un xls que Excel se niega a abrir.PHPExcel no exportará a CSV

Cualquier puntero sería muy apreciado.

error_reporting(E_ALL); 
$username="blah"; 
$password="blahz"; 
$database="hollatme"; 
$sqlsrv="localhizzost"; 
date_default_timezone_set('US/Central'); 
$currenttime=date("m-d-Y"); 

require_once 'Classes/PHPExcel.php'; 
$objPHPExcel = new PHPExcel(); 
$objPHPExcel->getProperties(); 


$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 somestuff from someplace;"; 
$result = mysql_query($query); 

if ($result = mysql_query($query) or die(mysql_error())) { 
    $objPHPExcel = new PHPExcel(); 
    $objPHPExcel->getActiveSheet()->setTitle('CYImport'.$currenttime.''); 

$rowNumber = 1; 
$headings = array('abunchof','differentheadings'); 
$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 = new PHPExcel_Writer_CSV($objPHPExcel); 
$objWriter->setDelimiter(','); 
$objWriter->setEnclosure(''); 
$objWriter->setLineEnding("\r\n"); 
$objWriter->setSheetIndex(0); 
$objWriter->save('blah '.$currenttime.'.csv'); 


    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 
    header('Content-Disposition: attachment;filename="CY Import '.$currenttime.'"..csv"'); 
    header('Cache-Control: max-age=0'); 

    $objWriter->save('php://output'); 
    exit(); 
} 
echo 'Contact your Administrator. No data received from server.'; 

Respuesta

8

Se podría intentar cambiar el tipo MIME a

header('Content-type: text/csv'); 
+3

Eres un caballero y un erudito. Apoyos locos, has resuelto mi problema. – floppyraid