簡體   English   中英

Symfony 無法將數據導出到 Excel

[英]Symfony Can't export data to Excel

大家好,我正在使用 Liuggio Excel Bundle,但無法使其正常工作:/ 我在用戶列表上方添加了選項以將數據導出到 excel,但單擊時什么也沒有發生,也沒有下載。 有人可以幫我一把嗎?

也許我說錯了?? 或者它的工作,但我不知道它保存文件的位置? 這就是我調用該方法的方式。

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

路由:

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

這是我的控制器的方法:

//----------------------------------------------------------
//---------------------------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;

}

提前致謝

我已經解決了,很簡單,但如果有人遇到同樣的問題,這里是答案。

只需要保存excel,我正在生成excel但從未保存它哈哈,所以我添加了這一行:

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

感謝大家的幫助 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM