在 laravel 5.7 和 excel 3.1 中导出前如何操作数据

How to manipulate data before exporting in laravel 5.7 and excel 3.1

我想自定义列名,将数据拼接在一列中。可以给数据加上一些条件。

下面是示例图片,数据将以这种格式显示。如何使这成为可能-

在这里您可以找到如何操作列名: https://laravel-excel.maatwebsite.nl/3.1/exports/mapping.html

下面是我的项目中有关如何使用它的示例。享受吧!

namespace App\Exports;
use App\Aluno;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithStrictNullComparison;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
class AlunosExport implements FromCollection, WithStrictNullComparison, WithHeadings, ShouldAutoSize
{
  /**
  * @return \Illuminate\Support\Collection
  */
  public function collection()
  {
      $alunos = Aluno::all();
      $dadosAluno = [];
      foreach ($alunos as $aluno) {
          $textoEtapas = '';
          foreach ($aluno->etapas as $etapa) {
              $textoEtapas .= "{$etapa->nome}";
              if ($etapa->concluido) {
                  $textoEtapas .= ' (Concluído)';
              }
              $textoEtapas .= "\n";
          }
          $dadosAluno[] = [
              'nome' => $aluno->cliente->nome,
              'telefone' => formatarTelefone($aluno->cliente->telefone),
              'instituicao' => $aluno->cliente->turma->unidade->instituicao->nome,
              'turma' => $aluno->cliente->turma->nome,
              'programa' => $aluno->programa->nome,
              'etapas' => $textoEtapas,
              'valor' => $aluno->valor,
              'orientador' => !is_null($aluno->orientador) ? $aluno->orientador->nome : '(Excluído)',
              'status' => $aluno->cliente->status
          ];
      }
      $alunoColection = collect($dadosAluno);
      return $alunoColection;
  }
  public function headings(): array
  {
      return [
          'Aluno',
          'Telefone',
          'Instituição',
          'Turma',
          'Programa',
          'Etapas',
          'Valor',
          'Orientador',
          'Status'
      ];
  }
}