防止 Yii2 kartik 中的科学记数法导出为 excel 单元格格式

Prevent from scientific notation numbers in Yii2 kartik export to excel cell format

我正在使用 kartik export 小部件导出我在 excel 中的网格视图。我可以导出所有数据,但有一个问题,我有一个列名称 imsi,它是文本形式的,但在导出它之后,该列具有所有相同的数字,即所有 IMSI 数字都相同。见下文

网格列

 $gridColumns =[
                [
                    'class'=>'kartik\grid\SerialColumn',

                ],
                 'id',
                ['attribute'=>'imsi','format'=>'text'],
                'sim_number'
  ]

如何设置正确的格式?任何帮助将不胜感激。

因为你的手机数据(imsi)是数字。 excel 或其他一些程序。当单元格的大小小于数字的长度时。他们将数字更改为科学数字或类似的东西。

以防止这样做。你必须增加单元格的宽度。

$gridColumns =[
    ['class'=>'kartik\grid\SerialColumn'],
    'id',
    [
        'attribute'=>'imsi',
        'vAlign'=>'middle',
        'width'=>'200px',
        'format'=>'raw',// or text
        'value'=>function($model){
            return $model->imsi.' ';
        }
    ],
    'sim_number'
]

更新: 讨论后。我们发现当我们在 value 中添加空格时,它会被强制转换为文本。

PS. 如果您想使用 excel 文件中的这个数字。您必须 trim 才能删除空格。

您可以使用:

$gridColumns =[
    ['class'=>'kartik\grid\SerialColumn'],
    'id',
    [
        'attribute'=>'imsi',
        'contentOptions' => ['cellFormat' => DataType::TYPE_STRING], 
    ],
    'sim_number'
]

记得包括

use PhpOffice\PhpSpreadsheet\Cell\DataType;
[
  'attribute'=>'imsi',
  'value' => function ($model) {
    return ' '.$model->imsi;
  }
],