a eredeti hogyan:
Symfony Howto: Export tabular data to a csv file?
Ennek teljese kidolgozott változata található itt.
A mymodule/Csv az adatokat ;-vel elválasztva megjeleníti.
Action:

<?php
class mymoduleActions extends autoMyActions
{
  public function executeCsv(sfWebRequest $request)
  {
    $this->pager = $this->getPager();
    $c=$this->pager->getCriteria();
    $c->setLimit(false);
    $this->rows=$this->pager->getResults();
     // $response = $this->getResponse();
     // $response->setHttpHeader('Content-type', 'application/msexcel');
     // $response->setHttpHeader('Content-Disposition', 'attachment; filename=akarmi.csv');
  }
}

csvSuccess.php:

<?php
 use_helper('I18N');
 $rowBefore = '';
 $rowAfter  = "\r\n";
 $cellBefore = '';
 $cellAfter = ';';
 $cellHeadBefore = '';
 $cellHeadAfter =';';
 echo $rowBefore;
 echo $cellHeadBefore.iconv('UTF-8', 'WINDOWS-1250', __('Head1')).$cellHeadAfter;
 echo $cellHeadBefore.iconv('UTF-8', 'WINDOWS-1250', __('Head1')).$cellHeadAfter;
 echo $rowAfter;
 foreach($rows as $row)
 {
   echo $rowBefore;
   echo $cellBefore.iconv('UTF-8', 'WINDOWS-1250', $row->getMezo1()).$cellAfter;
   echo $cellBefore.iconv('UTF-8', 'WINDOWS-1250', $row->getMezo2()).$cellAfter;
   echo $rowAfter;
 }

Ezután már csak a következőket kell beállítani:

  • vigyünk fel egy új routing szabályt a routing.yml fájlba
    export_excel:
      url:    /export.csv
      param:  {module: myModule, action: csv}
    
  • Apache mod_rewrite esetén egy új szabályra van szükség az apache .htaccess fájlba a .csv fájlok elérése végett.
    RewriteCond %{REQUEST_URI} !\.csv$
  • A mymodule/config/view.yml fájlba vigyük fel az aléábbi sorokat:
    csvSuccess:
      has_layout: off
      http_metas:
        content-type: application/msexcel
        Content-Disposition: attachment; filename=mymodule_<?php echo date('Ymd')?>.csv
  • vagy az actionben
          $response = $this->getResponse();
          $response->setHttpHeader('Content-type', 'application/msexcel');
          $response->setHttpHeader('Content-Disposition', 'attachment; filename=mymodule-'.date('Ymd').'.csv');
          $this->setLayout(false);
    

még egy fontos dolog:
Vagyis ha a szokványos módon csak egy táblázatot teszünk ki és azt mondjuk hogy az egy Excel fájl, akkor néha szükség lehet egy cellában több sorra is, akkor a <br> az alábbi stílussal fog működni:

br {mso-data-placement:same-cell;}