我接管了一个构建在Sonata Admin Bundle上的Symfony2应用程序,并被用户要求做一些小的更改。在列表页面的xls导出中,日期都显示为例如Wed, 01 Aug 2012 00:00:00 +0200,但Excel格式为General。用户希望此列中的数据是Excel日期类型,以便它是可排序的。
我已经能够找到一些关于导出自定义的信息,但这主要是关于选择列表导出文件类型,或者包括哪些字段,而不是如何在导出的文档中更改格式。类似的问题也被问到了here (我想),但没有答案。
我认为这将(或应该)非常简单,但它肯定不是显而易见的。任何帮助都将不胜感激。
发布于 2015-12-18 19:09:19
这是对Marciano答案的一个小小的改进。使代码对sonata更新更具弹性。
public function getDataSourceIterator()
{
$datasourceit = parent::getDataSourceIterator();
$datasourceit->setDateTimeFormat('d/m/Y'); //change this to suit your needs
return $datasourceit;
}发布于 2015-04-17 16:52:10
在我的管理类EmployeeAdmin中,我使用getExportFields函数指定要导出的字段:
public function getExportFields() {
return array(
$this->trans('list.label_interview_date') => 'interviewDateFormatted'
);
}interviewDateFormatted实际上是对相应实体(Employee)方法getInterviewDateFormatted的调用,如下所示:
public function getInterviewDateFormatted() {
return ($this->interviewDate instanceof \DateTime) ? $this->interviewDate->format("Y-m-d") : "";
}这样,我就可以更改日期格式或对要导出的字段进行其他必要的更改。
发布于 2015-01-15 20:58:37
这是我的代码。这是工作!
use Exporter\Source\DoctrineORMQuerySourceIterator;
use Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery;
use Sonata\AdminBundle\Datagrid\ProxyQueryInterface;and函数:
/**
* {@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');
}https://stackoverflow.com/questions/25624632
复制相似问题