如何使用laravel Excel垂直对齐中心单元格?
我的代码:
$sheet->cells('A1:'.$column_end.$i, function ($cells) {
$cells->setBackground('#d8d8d8');
$cells->setFontWeight('bold');
$cells->setValignment('middle');
});
但是它不起作用,我的大多数单元格都垂直对齐底部。
也许不在中间!
我尝试过“居中”,但它也不起作用。当我尝试“顶”或“底”时,它起作用了。
那么为什么“中间”或“中间”没有?
感谢您的帮助。
答案 0 :(得分:2)
根据Laravel Excel Documentation,应为:
$cells->setValignment('center');
就像你提到的...
尝试setAlignment('center')
作为测试,其行为应该与水平方向相同。如果这一项可行,那么另一项应该肯定。
答案 1 :(得分:0)
尝试一下
$sheet->cell('A1:G1',function($cell){
$cell->setAlignment('center');
$cell->setFontWeight('bold');
});
答案 2 :(得分:0)
我遇到了同样的问题,我不得不花点时间来理解它的工作原理,并弄清楚了,所以我想在这里发表评论,以防其他人偶然发现该主题
Laravel Excel使用phpspreadsheet并提供了一个简单的Larave接口和逻辑来使用它,但是没有太多解释,因此,这里首先是工作代码(进入Exports \ MyExportClassExport.php) :
/**
* @return array
*/
public function registerEvents(): array
{
return [
AfterSheet::class => function(AfterSheet $event) {
$event->sheet->getDelegate()->getStyle('A2:W2')->getAlignment()->setVertical(Alignment::VERTICAL_CENTER);
},
];
}
但是它如何工作?为什么?
为了完全控制电子表格以及Phpspreadsheet的所有真正有用的组件,Laravel-excel使您可以与一系列events进行交互,因此我们使用{{3} }事件,该事件在创建所有内容后触发。我既不是phpspreadsheet的专家,也不是Laravel Excel的专家,所以也许有人可以为我所做的事情提出一个更好的建议,无论如何都可以。
我们现在可以使用带有$ event变量的闭包来访问AfterSheet,并且可以访问两个不同的属性:sheet和exportable(请参见AfterSheet类),然后从sheet属性(即AfterSheet对象)使用getDelegate()方法进行委托,这是重要的部分。我们现在正在使用Phpspreadsheet中的Sheet类!
所以从现在开始,我们仅需遵循Worksheet来使用Phpspreadsheet,就可以根据需要来处理代码了!
我希望这能帮助或至少会帮助像我一样遇到这个话题而没有真实答案的人。