使用Sonata Admin Bundle更改xls导出中的日期格式

j_g*_*man 4 export-to-excel date-formatting symfony sonata-admin

我接管了在上构建的Symfony2应用程序的责任Sonata Admin Bundle,并要求用户进行一些小的更改。在列表页面的xls导出中,日期全部显示为例如Wed, 01 Aug 2012 00:00:00 +0200,但Excel格式为General。用户希望此列中的数据为Excel日期类型,以便可以排序。

我已经能够找到有关导出自定义的一些信息,但这主要与选择列表导出文件类型或要包括的字段有关,而不是如何更改导出文档中的格式。我在这里提出类似的问题,但没有答案。

我认为这将(或应该)非常简单,但显然并不明显。任何帮助将非常感激。

Nod*_*ens 5

Marciano的答案有一个小改进。使代码在应对奏鸣曲更新方面更具弹性。

public function getDataSourceIterator()
{
    $datasourceit = parent::getDataSourceIterator();
    $datasourceit->setDateTimeFormat('d/m/Y'); //change this to suit your needs
    return $datasourceit;
}
Run Code Online (Sandbox Code Playgroud)


小智 1

你成功了吗?

日期格式定义为新 DoctrineORMQuerySourceIterator.php 的参数(https://github.com/sonata-project/exporter/blob/master/lib/Exporter/Source/DoctrineORMQuerySourceIterator.php

DoctrineORMQuerySourceIterator.phpgetDataSourceIterator在函数内部创建( https://github.com/sonata-project/SonataDoctrineORMAdminBundle/blob/2705f193d6a441b9140fef0996ca392887130ec0/Model/ModelManager.php

里面Admin.php有函数调用它:

   public function getDataSourceIterator()
   {
        $datagrid = $this->getDatagrid();
        $datagrid->buildPager();
        return $this->getModelManager()->getDataSourceIterator($datagrid, $this->getExportFields());
    }
Run Code Online (Sandbox Code Playgroud)

如果您自己编写, getDataSourceIterator()则可以更改日期格式。