Yii2,ExportMenu:如何格式化日期,Excel会自动将其识别为日期?
问题描述:
我在我的网格中使用扩展名yii2-export将数据导出到XLS和XLSX。无论我尝试什么,Excel都不会自动识别日期。我曾尝试过以下列格式:Yii2,ExportMenu:如何格式化日期,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
我想,我必须将日期标记为日期。但是如何?
答
你可以试试这个:
在网格配置中添加:
'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回购的可能选项,但我没有证实这一点。
从中几个环节已采取:
答
在你的模型,你应该提供的日期类似以下内容:
public function getDate(){
return \PHPExcel_Shared_Date::PHPToExcel(Yii::$app->formatter->asTimestamp($this->date));
}
您的excel导出包含特定列的常规列和格式化功能。
<?= 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',
],
]);?>`
谢谢。它看起来很有希望。 –
1.问题:$ key不返回属性的名称,而是返回行的ID。 –
2.问题:$ cell-> setValue(\ PHPExcel_Shared_Date :: PHPToExcel(\ Yii :: $ app-> formatter-> asTimestamp('2016-01-01'))返回:'42370.394699074'并且不是Excel解释 –