2014-10-21 4 views
0

у меня есть проблемы с экспортом файла первенствовать из PHPЭкспорт Excel Zend Framework

$filename = realpath($filename); 
    $handle = fopen($filename, "w"); 

    $cols = array(); 

    fputcsv($handle,$cols, "\t"); 

    $table = array($_POST); 

    foreach ($table as $row){ 
     fputcsv($handle, $row, "\t"); 
    } 

    fclose($handle); 

    $this->_helper->layout->disableLayout(); 
    $this->_helper->viewRenderer->setNoRender(); 

    $this->getResponse()->setRawHeader("Content-Type: application/vnd.ms-excel; charset=UTF-8") 
     ->setRawHeader("Content-Disposition: attachment; filename=excel.xls") 
     ->setRawHeader("Content-Transfer-Encoding: binary") 
     ->setRawHeader("Expires: 0") 
     ->setRawHeader("Cache-Control: must-revalidate, post-check=0, pre-check=0") 
     ->setRawHeader("Pragma: public") 
     ->setRawHeader("Content-Length: " . filesize($filename)) 
     ->sendResponse(); 

С помощью этого кода я получаю файл Excel, но данные находятся в столбце A (Excel) Как я могу получить правильный формат? Переменная $ таблица выглядит следующим образом:

// EDIT var_dump ($ _ POST) выглядит как

<tr><th>Name</th><th>Surname</th></tr> 
<tr><td>Mike</td><td>Dirnt</td></tr> 
+0

вам нужно PHPExcel, просто интегрировать его ZF2 – ZloyPotroh

ответ

0

Проблема здесь состоит в том, что вы на самом деле создать CSV-файл, а не в файл XLS. Они очень разные. Сохраните его в формате CSV с типом содержимого набора в текст/CSV вместо:

$this->getResponse()->setRawHeader("Content-Type: text/csv; charset=UTF-8") 
    ->setRawHeader("Content-Disposition: attachment; filename=excel.csv") 
    ->setRawHeader(....... 

Это будет по-прежнему открыт в Excel!

+0

К сожалению, ситуация не меняется :( – Italiano

+0

Тогда вы будете нуждаться, чтобы предоставить некоторые данные примера. Вы можете сделать 'var_dump ($ _ POST)'? – rjdown

+0

ok Я отредактировал .. – Italiano

0

Пожалуйста, следуйте ниже кода с вашими данными, он будет работать на zend. Кроме того, замените его классом контроллера.

Class ExportExcelController extends Zend_Controller_Action{ 

public function exportexcelAction() 
{ 
set_time_limit(0); 

$model = new Default_Model_SomeModel(); 
$data = $model->getData(); 

$filename = APPLICATION_PATH . "/tmp/excel-" . date("m-d-Y") . ".xls"; 

$realPath = realpath($filename); 

if (false === $realPath) 
{ 
touch($filename); 
chmod($filename, 0777); 
} 

$filename = realpath($filename); 
$handle = fopen($filename, "w"); 
$finalData = array(); 
foreach ($data AS $row) 
{ 
$finalData[] = array(
utf8_decode($row["col1"]), // For chars with accents. 
utf8_decode($row["col2"]), 
utf8_decode($row["col3"]) 
); 
} 

foreach ($finalData AS $finalRow) 
{ 
fputcsv($handle, $finalRow, "\t"); 
} 

fclose($handle); 

$this->_helper->layout->disableLayout(); 
$this->_helper->viewRenderer->setNoRender(); 

$this->getResponse()->setRawHeader("Content-Type: application/vnd.ms-excel; charset=UTF-8") 
->setRawHeader("Content-Disposition: attachment; filename=excel.xls") 
->setRawHeader("Content-Transfer-Encoding: binary") 
->setRawHeader("Expires: 0") 
->setRawHeader("Cache-Control: must-revalidate, post-check=0, pre-check=0") 
->setRawHeader("Pragma: public") 
->setRawHeader("Content-Length: " . filesize($filename)) 
->sendResponse(); 

readfile($filename); unlink($filename); exit(); 
} 

} 
Смежные вопросы