【问题标题】:Laravel Excel vertical align centerLaravel Excel 垂直居中对齐
【发布时间】:2018-08-17 19:47:03
【问题描述】:

如何使用 laravel Excel 垂直对齐中心单元格?

我的代码:

$sheet->cells('A1:'.$column_end.$i, function ($cells) {
                $cells->setBackground('#d8d8d8');
                $cells->setFontWeight('bold');
                $cells->setValignment('middle');
            });

但这不起作用,我的大多数单元格都是垂直对齐底部的。

也许不是中间!

我尝试了“中心”,但也没有用。当我尝试“顶部”或“底部”时,它起作用了。

那么为什么“中间”或“中心”没有呢?

感谢您的帮助。

【问题讨论】:

    标签: php laravel maatwebsite-excel


    【解决方案1】:

    根据Laravel Excel Documentation,应该是:

    $cells->setValignment('center');
    

    就像你提到的......

    尝试作为测试,setAlignment('center'),根据它,行为应该是相同的,但对于水平。如果这个有效,那么另一个肯定应该。

    【讨论】:

    • 但是我在哪里可以获得“$cells”对象?
    • @Yagnesz 你想做什么?
    • 导出 excel 并且我希望将日期列对齐设置为正确,但是我在哪里可以得到这个对象?我的代码看起来像 $excelModel = \Excel::create(files, function($excel) use ($getExportData) { $excel->sheet('sheet', function($sheet) use ($getExportData){ $sheet- >fromArray($getExportData); }); })->store('xls', public_path('excel/files'));
    • 试试Furya的代码,$cell应该用闭包函数实例化,用同一个块替换你需要的行。
    【解决方案2】:

    试试这个

    $sheet->cell('A1:G1',function($cell){ $cell->setAlignment('center'); $cell->setFontWeight('bold'); });

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,我不得不挖掘一下以了解它是如何工作并弄清楚的,所以我想在这里留下评论,以防其他人偶然发现这个话题

      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 进行交互,因此我们使用了AfterSheet 事件,它是在所有内容创建后触发。我不是 phpspreadsheet 和 Laravel Excel 方面的专家,所以也许有人可以为我正在做的事情建议一个更好的活动,无论如何它是有效的。

      我们现在可以通过带有 $event 变量的闭包访问 AfterSheet,我们可以访问两个不同的属性:sheet 和 exportable(参见AfterSheet 类),我们从 sheet 属性(即@987654326 @object) 具有 getDelegate() 方法的委托,这是重要的部分。我们现在正在使用 Phpspreadsheet 中的 Worksheet 类!

      所以从现在开始,我们只需关注 Phpspreadsheet 的 documentation,就可以按照我们的意愿处理代码了!

      我希望这会有所帮助,或者至少会帮助像我这样在没有真正答案的情况下遇到这个话题的人。

      【讨论】:

      • 对我不起作用。不幸的是,没有错误与没有这个相同的输出
      猜你喜欢
      • 2013-02-13
      • 1970-01-01
      • 2013-09-10
      • 2012-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多