Skip to content

Latest commit

 

History

History
92 lines (74 loc) · 3.18 KB

draft_import_export.md

File metadata and controls

92 lines (74 loc) · 3.18 KB

Adicionar as traits na model, exemplo:

use Illuminate\Foundation\Auth\User as Authenticatable;
use Arandu\LaravelMuiAdmin\Traits\Importable;
use Arandu\LaravelMuiAdmin\Traits\Exportable;

class User extends Authenticatable
{
    use Importable;
    use Exportable;
    // ...
}

Adicionar o método personalizado para cada trait na model, exemplo:

  • Importable
    public static function createElementsFromSpreadsheet($spreadsheet)
    {
        DB::beginTransaction();

        $worksheet = $spreadsheet->getActiveSheet(); // Obtém a primeira planilha do arquivo
        $highestRow = $worksheet->getHighestRow();

        for ($row = 2; $row <= $highestRow; $row++) {
            $cells = $worksheet->rangeToArray("A{$row}:Z{$row}");
            if (empty(array_filter($cells[0]))) { // Se a linha estiver vazia, ignora a mesma.
                continue;
            }
            
            $data = [
                'name' => $worksheet->getCell('A'.$row)->getValue(),
                'email' => $worksheet->getCell('B'.$row)->getValue(),
                'password' => $worksheet->getCell('C'.$row)->getValue(), // $password = strtoupper(substr($name, 0, 2)) . $day . $year;
                'remember_token' => $worksheet->getCell('D'.$row)->getValue(),
            ];
            
            self::create($data); // salva os dados definidos no array
        }
        
        DB::commit();
    }
  • Exportable
    public static function createExportablesSpreadsheet($spreadsheet)
    {
        $sheet = $spreadsheet->getActiveSheet(); // Pega a instância ativa da planilha

        // Define o título das colunas na planilha
        $columns = ['Nome', 'E-mail', 'Senha', 'Telefone'];

        // Write columns to the first row
        foreach ($columns as $index => $column) {
            $sheet->setCellValueByColumnAndRow($index + 1, 1, $column);
        }

        // Define a cor de fundo para amarelo
        $sheet->getStyle('A1:Z1000') // Intervalo ajustável de acordo à necessidade
            ->getFill()
            ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
            ->getStartColor()
            ->setARGB('FFFF00'); // Define o background color da célula para amarelo

        // Define as células A2 a D201 para sem formatação
        $sheet->getStyle('A2:D201')
            ->getFill()
            ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_NONE);

        // Formata a fonte da primeira linha em negrito, Arial, tamanho 14
        $sheet->getStyle('A1:Z1') // Intervalo ajustável de acordo à necessidade
            ->getFont()
            ->setBold(true)
            ->setName('Arial')
            ->setSize(14);

            // Centraliza o conteúdo da primeira linha
        $sheet->getStyle('A1:Z1') // Intervalo ajustável de acordo à necessidade
            ->getAlignment()
            ->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER)
            ->setVertical(\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER);

        // Ajusta a largura da coluna de acordo com o conteúdo
        for ($i = 'A'; $i !== 'E'; $i++) {
            $sheet->getColumnDimension($i)->setAutoSize(true);
        }
    }