我正在使用yii2 kartik的gridview。在其中有一列,其值类似于R65678,P5675、4568895、006976等。现在发生的是在导出到Excel时发生的一些值中的前导零被截断。因此006976出现了6976。 我该如何解决这个问题? 有什么方法可以从网格配置Excel格式吗?
答案 0 :(得分:0)
这可能是 excel如何导入数据的问题,而不是gridview导出数据的方式,您可以尝试将数据导出到csv以检查gridview是否正确导出了数据。
当excel导入数据时,它会尝试猜测单元格上哪种类型的值,006976
只有数字,因此excel会将其视为数字并去除前导零。
对此的一种解决方法是在输出的值之前添加一个非数字字符,这样excel会将值视为文本并保留所有字符。 Zero width non-joiner为此很好,"\u{200C}"
。
要将字符添加到gridview的输出中,可以执行以下操作:
<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
'column1',
[
'attribute' => 'column2',
'value' => function ($data) {
return "\u{200C}" . $data->column2;
},
],
...
],
]); ?>