Yii2,ExportMenu:如何格式化一个date,Excel会自动把它识别为date?

我在我的网格中使用扩展yii2-export将数据导出到XLS和XLSX。 无论我尝试什么,Excel都不会自动识别date。 我曾尝试例如以下列格式:

'mydate', // yyyy-mm-dd 'mydate:date', // dd.mm.yyyy [ 'attribute' => 'mydate', 'value' => function($model) { return date("m/d/Y", strtotime($model->mydate)); }, ], // mm/dd/yyyy 

我想,我必须把date标记为date。 但是,如何?

你可以试试这个:

在网格configuration中添加:

 'onRenderDataCell' => function ($cell, $content, $model, $key, $index, $grid) { if ($key == 'mydate') { $cell->setValue(\PHPExcel_Shared_Date::PHPToExcel(\Yii::$app->formatter->asTimestamp($model->$key))); } }, 

绝对不是 100%确定它是否有效。 一些命名空间的修复也是需要的。 这个想法是改变单元格的内容,我正在检查PHPExcel回购可能的选项,但我没有证实这一点。

很less有链接:

  • 导出菜单文档#40
  • PHPExcel_Shared_Date类
  • 具有不同types的PHPExcel示例文件

在你的模型中,你应该提供如下的date:

 public function getDate(){ return \PHPExcel_Shared_Date::PHPToExcel(Yii::$app->formatter->asTimestamp($this->date)); } 

您的Excel导出包含正常列和特定列的格式化function。

 <?= ExportMenu::widget([ 'onRenderSheet' => function($sheet, $grid){ $sheet->getStyle('What ever column it is(A, B, C, ..)')->getNumberFormat() ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_DDMMYYYY); } }, 'columns' => [ [ 'attribute' => 'date', 'label' => 'Datum', ], ]);?>`