2017-01-23 2 views
-1

Hallo alle, die ich benutze Liuggio Excel Bundle aber kann es nicht funktionieren:/Ich fügte hinzu und Option über meine Benutzerliste, um die Daten zu Excel exportieren, aber wenn geklickt wird passiert nichts, kein Download. könnte jemand mir eine Hand geben?Symfony Kann keine Daten nach Excel exportieren

vielleicht im Aufruf es falsch? oder es funktioniert, aber ich weiß nicht, wo es die Datei speichern? so nenne ich die Methode.

<a href="{{ path('excel_list') }}" class="btn btn-sm btn-info">Export Data</a> 

Routing:

excel_list: 
path:  /excel_list 
defaults: { _controller: PaginasUsersBundle:Default:ExcelExport } 

hier ist die Methode meiner Controller:

//---------------------------------------------------------- 
//---------------------------Excel-------------------------- 
//---------------------------------------------------------- 

public function ExcelExportAction(Request $request) 
{ 
$em=$this->getDoctrine()->getManager(); 

$query=$em->getRepository('PaginasUsersBundle:Users') 
    ->createQueryBuilder('u') 
    ->select('u.id, u.name, u.username, u.email') 
    ->getQuery(); 

$result=$filterQuery->getResult(); 

$phpExcelObject = $this->get('phpexcel')->createPHPExcelObject(); 

$phpExcelObject->getProperties() 
    ->setCreator("xxx") 
    ->setLastModifiedBy("xxxx") 
    ->setTitle("Excel Example") 
    ->setSubject("Example") 
    ->setDescription("Example List"); 

$phpExcelObject->setActiveSheetIndex(0); 
$phpExcelObject->getActiveSheet()->setTile('Export Example'); 

$phpExcelObject->setACtiveSheetIndex(0) 
    ->setCellValue('B2','ID') 
    ->setCellValue('C2','Name') 
    ->setCellValue('D2','Username') 
    ->setCellValue('E2','Email'); 

//fijamos un ancho a las distintas columnas 
$phpExcelObject->setActiveSheetIndex(0) 
    ->getColumnDimension('B') 
    ->setWidth(30); 
$phpExcelObject->setActiveSheetIndex(0) 
    ->getColumnDimension('C') 
    ->setWidth(25); 
$phpExcelObject->setActiveSheetIndex(0) 
    ->getColumnDimension('D') 
    ->setWidth(15); 
$phpExcelObject->setActiveSheetIndex(0) 
    ->getColumnDimension('E') 
    ->setWidth(20); 

$row=3; 
foreach ($result as $item){ 
    $phpExcelObject->setActiveSheetIndex(0) 
     ->setCellValue('B'.$row, $item['id']) 
     ->setCellValue('C'.$row, $item['name']) 
     ->setCellValue('D'.$row, $item['username']) 
     ->setCellValue('E'.$row, $item['email']); 
    $row ++; 
} 

$writer = $this->get('phpexcel')->createWriter($phpObject, 'Excel5'); 

$response = $this->get('phpexcel')->createStreamedREsponse($writer); 

$dispositionHeader = $response->headers->makeDisposition(
    ResponseHeaderBag::DISPOSITION_ATTACHMENT, 
    'userList.xls' 
); 

$response->headers->set('Content-Type', 'text/vnd.ms-excel; charset=utf-8'); 
$response->headers->set('Pragma', 'public'); 
$response->headers->set('Cache-control','maxage=1'); 
$response->headers->set('Content-Disposition', $dispositionHeader); 

return $response; 

} 

Dank im Voraus

+0

Was Dateien sagen meldet? – smarber

+0

wahrscheinlich müssen Sie den Objektzugriff durch Array-Zugriff als Beispiel ersetzen, die Sie ersetzen müssen: '$ item-> getId()' mit '$ item ['id]' – Matteo

+0

danke ich aktualisiert meine Aktion, aber immer noch keine Excel-Datei zum Download :/ –

Antwort

0

ich es schon gelöst, war es so einfach, aber hier ist die Antwort, wenn jemand das gleiche Problem hat ..

müssen nur die Excel speichern, ich war die Excel erzeugen, aber es nie haha ​​speichern, so fügte ich diese Zeile:

$writer->save('/path/to/save/filename.xls'); 

Dank an alle für Ihre Hilfe :)

Verwandte Themen