es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo cambiar los nombres de las columnas en Excel Laravel?

Utilizo esta biblioteca para exportar datos de una colección a un archivo de Excel. Por defecto, obtengo los nombres de las columnas como nombres de los campos de la tabla.

¿Cómo puedo reemplazar los nombres de las columnas por los propios?

Tengo una clase abstracta propia:

abstract class Excel
{

abstract public function export();

public function download()
{
    $this->file = \Excel::create($this->filename, function ($excel) {
        $excel->sheet($this->sheetname, function ($sheet) {
            $sheet->fromArray($this->data->toArray());
        });
    })->store($this->typefile, $this->path_save);
}

}

Mi archivo de Excel:

<?php

namespace App\Library;

use App\Library\Excel;
use App\DistributorContacts;
use App\PersonalityTraits;
use App\Helpers\Helper;
use Maatwebsite\Excel\Concerns\WithHeadings;


class ExcelConclusions extends Excel implements WithHeadings
{


    public $type = "_conclusions";


    public function headings(): array
    {
        return ["tus", "encabezados", "aquí"];
    }

    public function export()
    {}
}
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para reemplazar los nombres de las columnas por su cuenta:

    1. Actualice su clase ExcelConclusions para implementar la interfaz WithHeadings.
    2. Implemente el método headings() para devolver un arreglo con los nombres de las columnas personalizados.
    3. En el método download() de su clase abstracta Excel, pase la implementación de WithHeadings como un parámetro al método sheet().

    Aquí está una versión actualizada de su código:

    <?php
    
    namespace App\Library;
    
    use App\Library\Excel;
    use App\DistributorContacts;
    use App\PersonalityTraits;
    use App\Helpers\Helper;
    use Maatwebsite\Excel\Concerns\WithHeadings;
    
    
    class ExcelConclusions extends Excel implements WithHeadings
    {
    
    
        public $type = "_conclusions";
    
    
        public function headings(): array
        {
            return ["Custom", "Column", "Names"];
        }
    
        public function export()
        {}
    
    }
    
    abstract class Excel
    { 
    
        abstract public function export();
    
        public function download(WithHeadings $withHeadings = null)
        {
            $this->file = \Excel::create($this->filename, function ($excel) use ($withHeadings) {
                $excel->sheet($this->sheetname, function ($sheet) use ($withHeadings) {
                    if ($withHeadings) {
                        $sheet->with($this->data, $withHeadings);
                    } else {
                        $sheet->fromArray($this->data->toArray());
                    }
                });
            })->store($this->typefile, $this->path_save);
        }
    
    }
    

    En el método download() actualizado, agregamos un parámetro $withHeadings de tipo WithHeadings y lo pasamos al método sheet() utilizando el método with(). Esto usará los nombres de columna personalizados proporcionados en el método headings(). Si $withHeadings es nulo, se utilizarán los nombres de columna predeterminados.

Comments are closed.