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', ], ]);?>`