首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Sonata Admin Bundle更改xls导出中的日期格式

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

Stack Overflow用户
提问于 2014-09-02 21:29:41
回答 6查看 4.6K关注 0票数 4

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

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

我认为这将(或应该)非常简单,但它肯定不是显而易见的。任何帮助都将不胜感激。

EN

回答 6

Stack Overflow用户

发布于 2015-12-18 19:09:19

这是对Marciano答案的一个小小的改进。使代码对sonata更新更具弹性。

代码语言:javascript
复制
public function getDataSourceIterator()
{
    $datasourceit = parent::getDataSourceIterator();
    $datasourceit->setDateTimeFormat('d/m/Y'); //change this to suit your needs
    return $datasourceit;
}
票数 6
EN

Stack Overflow用户

发布于 2015-04-17 16:52:10

在我的管理类EmployeeAdmin中,我使用getExportFields函数指定要导出的字段:

代码语言:javascript
复制
   public function getExportFields() {
       return array(
            $this->trans('list.label_interview_date') => 'interviewDateFormatted'           
       );
}

interviewDateFormatted实际上是对相应实体(Employee)方法getInterviewDateFormatted的调用,如下所示:

代码语言:javascript
复制
    public function getInterviewDateFormatted() {
    return ($this->interviewDate instanceof \DateTime) ? $this->interviewDate->format("Y-m-d") : "";
}

这样,我就可以更改日期格式或对要导出的字段进行其他必要的更改。

票数 3
EN

Stack Overflow用户

发布于 2015-01-15 20:58:37

这是我的代码。这是工作!

代码语言:javascript
复制
use Exporter\Source\DoctrineORMQuerySourceIterator;
use Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery;
use Sonata\AdminBundle\Datagrid\ProxyQueryInterface;

and函数:

代码语言:javascript
复制
/**
 * {@inheritdoc}
 */
public function getDataSourceIterator()
{

    $datagrid = $this->getDatagrid();
    $datagrid->buildPager();
    $fields=$this->getExportFields();
    $query = $datagrid->getQuery();


    $query->select('DISTINCT ' . $query->getRootAlias());
    $query->setFirstResult(null);
    $query->setMaxResults(null);



    if ($query instanceof ProxyQueryInterface) {
        $query->addOrderBy($query->getSortBy(), $query->getSortOrder());

        $query = $query->getQuery();
    }


    return new DoctrineORMQuerySourceIterator($query, $fields,'d.m.Y');
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25624632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档