Yii2,ExportMenu:如何格式化日期,Excel会自动将其识别为日期?

时间:2016-09-23 08:27:57

标签: excel yii2

我在网格中使用扩展名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

我想,我必须将日期标记为日期。但是如何?

2 个答案:

答案 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',
               ],


        ]);?>`