我在网格中使用扩展名yii2-export将数据导出到XLS和XLSX。无论我尝试什么,Excel都不会自动识别日期。我试过例如以下列格式:
'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
我想,我必须将日期标记为日期。但是如何?
答案 0 :(得分:1)
你可以试试这个:
在网格配置中添加:
'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 repo中可能的选项,但我还没有验证这一点。
很少有链接:
答案 1 :(得分:0)
在您的模型中,您应该提供如下日期:
public function getDate(){
return \PHPExcel_Shared_Date::PHPToExcel(Yii::$app->formatter->asTimestamp($this->date));
}
您的Excel导出包含特定列的常规列和格式设置功能。</ p>
<?= 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',
],
]);?>`