Adatok exportálása csv fájlba
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]
<?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’);
}
}
[/php]
csvSuccess.php:
[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;
}
[/php]
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
[text]
export_excel:
url: /export.csv
param: {module: myModule, action: csv}
[/text]
- 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.
[text]RewriteCond %{REQUEST_URI} !\.csv$[/text]
- A mymodule/config/view.yml fájlba vigyük fel az aléábbi sorokat:
[text]
csvSuccess:
has_layout: off
http_metas:
content-type: application/msexcel
Content-Disposition: attachment; filename=mymodule_<?php echo date(‘Ymd’)?>.csv[/text] - vagy az actionben
[php]
$response = $this->getResponse();
$response->setHttpHeader(‘Content-type’, ‘application/msexcel’);
$response->setHttpHeader(‘Content-Disposition’, ‘attachment; filename=mymodule-‘.date(‘Ymd’).’.csv’);
$this->setLayout(false);
[/php]
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:
[php]
br {mso-data-placement:same-cell;}
[/php]
Adatok exportálása csv fájlba bejegyzéshez a hozzászólások lehetősége kikapcsolva