Callum  Allen

Callum Allen

1656702180

Como Importar Dados CSV E Excel Para O Banco De Dados MySQL No Laravel

A importação de dados em massa é um recurso útil para adicionar registros armazenados em um arquivo ao banco de dados. Os dados podem ser armazenados em formato – CSV, Excel, XML, ODS, etc.

Neste tutorial, mostro como você pode importar dados CSV e Excel para o banco de dados MySQL usando o pacote Laravel Excel no projeto Laravel 8.


1. Instale o pacote

Requerimento -

  • PHP: ^7.2\|^8.0
  • Laravel: ^5.8
  • Planilha Php: ^1.21
  • psr/cache simples: ^1.0
  • Extensão PHP  php_zip habilitada
  • Extensão PHP  php_xml habilitada
  • Extensão PHP  php_gd2 habilitada
  • Extensão PHP  php_iconv habilitada
  • Extensão PHP  php_simplexml habilitada
  • Extensão PHP  php_xmlreader habilitada
  • Extensão PHP  php_zlib habilitada

Instale o pacote usando o compositor –

composer require maatwebsite/excel

Se você estiver recebendo um erro ao executar o comando acima, execute o comando abaixo –

composer require psr/simple-cache:^1.0 maatwebsite/excel

Depois disso, execute novamente –

composer require maatwebsite/excel

2. Atualize app.php

  • Abrir  config/app.php arquivo.
  • Adicione o seguinte Maatwebsite\Excel\ExcelServiceProvider::class em  'providers' –
'providers' => [
      ....
      ....
      ....  
      Maatwebsite\Excel\ExcelServiceProvider::class
];
  • Adicione o seguinte  'Excel' => Maatwebsite\Excel\Facades\Excel::class em  'aliases' –
'aliases' => [
     .... 
     .... 
     .... 
     'Excel' => Maatwebsite\Excel\Facades\Excel::class
];

3. Publicar pacote

Execute o comando -

php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider" --tag=config

Isso criará um novo excel.phparquivo em config/.


4. Configuração do banco de dados

Abrir .envarquivo.

Especifique o host, o nome do banco de dados, o nome de usuário e a senha.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=tutorial
DB_USERNAME=root
DB_PASSWORD=

5. Criar Tabela

  • Crie uma nova tabela Employeesusando a migração e adicione alguns registros.
php artisan make:migration create_employees_table
  • Agora, navegue até a database/migrations/pasta da raiz do projeto.
  • Encontre um arquivo PHP que termine com create_employees_tablee abra-o.
  • Defina a estrutura da tabela no up()método.
public function up()
{
    Schema::create('employees', function (Blueprint $table) {
        $table->id();
        $table->string('username');
        $table->string('name');
        $table->string('email');
        $table->smallInteger('age');
        $table->timestamps();
    });
}
  • Execute a migração –
php artisan migrate
  • A tabela foi criada.

6. Modelo

  • Criar Employeesmodelo.
php artisan make:model Employees
  • Abrir  app/Models/Employees.php arquivo.
  • Especifique atributos de modelo atribuíveis em massa – nome de usuário, nome, email e idade usando a $fillablepropriedade.

Código concluído

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Employees extends Model
{
    use HasFactory;

    protected $fillable = [
       'username','name','email','age'
    ];
}

7. Criar classe de importação

Estou criando 2 classes de importação apenas para fins de exemplo -

1. Classe de importação de funcionários -

php artisan make:import EmployeesImport --model=Employees
  • Abrir  app/Imports/EmployeesImport.php arquivo.
  • A classe tem 1 método –
    • model() – Lê os valores do $rowArray e insere um registro se o ID do email não existir na employeestabela, caso contrário, retorna null.

NOTA – Esta classe de importação começa a ler os registros da 1ª linha. Expliquei como pular a primeira linha que contém o título na próxima classe de importação.

Arquivo CSV sem linha de cabeçalho –

usuário1Usuário1 u1user1@makitweb.com28
usuário2Usuário2 u2user2@makitweb.com24

Código concluído

<?php
namespace App\Imports;

use App\Models\Employees;
use Maatwebsite\Excel\Concerns\ToModel;

class EmployeesImport implements ToModel {
    /**
    * @param array $row
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */
    public function model(array $row) {
 
       // Check email already exists
       $count = Employees::where('email',$row[2])->count();
       if($count > 0){
          return null;
       }
       return new Employees([
          'username' => $row[0],
          'name' => $row[1], 
          'email' => $row[2],
          'age' => $row[3],
       ]);
    }

}

2. Empregados2 Classe de Importação -

php artisan make:import Employees2Import --model=Employees
  • Abrir  app/Imports/Employees2Import.php arquivo.
  • A classe tem 2 métodos –
    • collection() – Valida $rowsos dados do Array. Se validado com sucesso, insira o registro se o ID do email não existir na employeestabela, caso contrário, retorne o erro.

OBSERVAÇÃO – Se  WithHeadingRowfor implementado, $rowsArrays conterá cabeçalho de linha como nomes de chave em vez de índice.

  • headerRow() – Retorna a posição do índice do título.

Arquivo CSV com linha de título –

Nome de usuárioNomeE-mailEra
yssyogeshYogesh singhyogesh@makitweb.com28
bsonarikaSonarika Bhadoriabsonarika@makitweb.com28
vishalVishal Sahuvishal@makitweb.comtrigésimo primeiro

Código concluído

<?php

namespace App\Imports;

use App\Models\Employees;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Illuminate\Support\Facades\Validator;

class Employees2Import implements ToCollection ,WithHeadingRow
{

    public function collection(Collection $rows){

       // Validate
       Validator::make($rows->toArray(), [
          '*.username' => 'required|string',
          '*.name' => 'required|string',
          '*.email' => 'required|email',
          '*.age' => 'required|integer',
       ],[
          '*.username.required'=> "The username field is required.",
          '*.username.string'=> "The username must be string.",
          '*.name.required'=> "The name field is required.",
          '*.name.string'=> "The name must be string.",
          '*.email.required'=> "The email field is required.",
          '*.email.email'=> "The email must be a valid email address.",
          '*.age.integer'=> "The age must be an integer."
       ])->validate();

       foreach ($rows as $row) {

          // Check email already exists
          $count = Employees::where('email',$row['email'])->count();
          if($count > 0){
             continue;
          }
          Employees::create([
             'username' => $row['username'],
             'name' => $row['name'], 
             'email' => $row['email'],
             'age' => $row['age'],
         ]);
       }
    }

    // Specify header row index position to skip
    public function headingRow(): int {
       return 1;
    }
}

8. Rota

  • Abrir  routes/web.php arquivo.
  • Defina 3 rotas –
    • / –  Carregar visualização de índice.
    • empregados/importdata – Post rota para Importar dados.
    • funcionários/validateandimportdata – Post rota para validar e importar dados.

Código concluído

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\EmployeesController;

Route::get('/', [EmployeesController::class, 'index'])->name('home'); 
Route::post('employees/importdata/', [EmployeesController::class, 'importData'])->name('employees.importdata');
Route::post('employees/validateandimportdata/', [EmployeesController::class, 'validateAndImportdata'])->name('employees.validateandimportdata');

9. Controlador

  • Criar  EmployeesController controlador.
php artisan make:controller EmployeesController
  • Abrir  app/Http/Controllers/EmployeesController.php arquivo.
  • Importar   e  . EmployeesImportEmployees2ImportExcel
  • Crie 3 métodos –
    • index() – Carregar indexvisualização.
    • importdata() – Para importar chame Excel::import().

Passe 2 parâmetros –

  1. EmployeesImportInstância de classe.
  2. Passe o local 'temp' do arquivo selecionado.
    • validateAndImportdata() – Novamente chame Excel::import().

Passe 2 parâmetros –

  1. Employees2ImportInstância de classe.
  2. Passe o local do arquivo armazenado (guardei o arquivo na public/employees.xlsxpasta).

Código concluído

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Imports\EmployeesImport;
use App\Imports\Employees2Import;
use Excel;

class EmployeesController extends Controller
{
   public function index(){
      return view('index');
   }

   // Import data 
   public function importdata(Request $request){
      Excel::import(new EmployeesImport, $request->file('file')->store('temp'));
      return back()->with('success', 'Import successfully!');
   }

   // Validate and Import data 
   public function validateAndImportdata(Request $request){

      Excel::import(new Employees2Import, "employees.xlsx");
      return back()->with('success', 'Import successfully!');
   }

}

10. Visualizar

Criar  index.blade.php arquivo na  resources/views/ pasta.

Criar 2 <form>-

  • Na 1ª <form >ação definida para {{ route('employees.importdata') }}. Crie um elemento de arquivo e um botão de envio.
  • Na 2ª <form>ação defina para {{ route('employees.validateandimportdata') }}. Crie um botão de envio.

Faça um loop $errors->all()para exibir erros.

Código concluído

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1">
   <title>How to Import data into MySQL database in Laravel 8</title>

   <!-- CSS -->
   <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" >
</head>
<body>

   <div class="container mt-5">

      <!-- Success message -->
      @if(Session::has('success'))
         <div class="alert alert-success">
            {{ Session::get('success') }}
         </div>
      @endif

      <form method='post' action="{{ route('employees.importdata') }}" enctype="multipart/form-data">
         @csrf
         <div class="mb-3">
            <label for="file" class="form-label">File</label>
            <input type="file" class="form-control" id="file" name="file" value="">
         </div>

         <button type="submit" class="btn btn-success">Import</button>
      </form>

      <!-- Import data with validation -->
      <h2 class='mt-5'>Validate and import data</h2>
      {{-- Display errors --}}
      @if (count($errors) > 0)
         <div class="row">
            <div class="col-md-12 ">
                <div class="alert alert-danger">
                   <ul>
                      @foreach($errors->all() as $error)
                         <li>{{ $error }} </li>
                      @endforeach 
                   </ul> 
                </div>
            </div>
         </div>
      @endif

      <form method='post' action="{{ route('employees.validateandimportdata') }}" >
         @csrf
         <button type="submit" class="btn btn-success">Import</button>
      </form>
   </div>

</body>
</html>

11. Saída

Ver saída


12. Conclusão

Certifique-se de validar o registro antes de inserir ou atualizar registros na classe Import. Especifique WithHeadingRowna classe Import apenas se o arquivo de importação tiver uma linha de cabeçalho.

Fonte: https://makitweb.com

#laravel #php #mysql 

What is GEEK

Buddha Community

Como Importar Dados CSV E Excel Para O Banco De Dados MySQL No Laravel
Callum  Allen

Callum Allen

1656702180

Como Importar Dados CSV E Excel Para O Banco De Dados MySQL No Laravel

A importação de dados em massa é um recurso útil para adicionar registros armazenados em um arquivo ao banco de dados. Os dados podem ser armazenados em formato – CSV, Excel, XML, ODS, etc.

Neste tutorial, mostro como você pode importar dados CSV e Excel para o banco de dados MySQL usando o pacote Laravel Excel no projeto Laravel 8.


1. Instale o pacote

Requerimento -

  • PHP: ^7.2\|^8.0
  • Laravel: ^5.8
  • Planilha Php: ^1.21
  • psr/cache simples: ^1.0
  • Extensão PHP  php_zip habilitada
  • Extensão PHP  php_xml habilitada
  • Extensão PHP  php_gd2 habilitada
  • Extensão PHP  php_iconv habilitada
  • Extensão PHP  php_simplexml habilitada
  • Extensão PHP  php_xmlreader habilitada
  • Extensão PHP  php_zlib habilitada

Instale o pacote usando o compositor –

composer require maatwebsite/excel

Se você estiver recebendo um erro ao executar o comando acima, execute o comando abaixo –

composer require psr/simple-cache:^1.0 maatwebsite/excel

Depois disso, execute novamente –

composer require maatwebsite/excel

2. Atualize app.php

  • Abrir  config/app.php arquivo.
  • Adicione o seguinte Maatwebsite\Excel\ExcelServiceProvider::class em  'providers' –
'providers' => [
      ....
      ....
      ....  
      Maatwebsite\Excel\ExcelServiceProvider::class
];
  • Adicione o seguinte  'Excel' => Maatwebsite\Excel\Facades\Excel::class em  'aliases' –
'aliases' => [
     .... 
     .... 
     .... 
     'Excel' => Maatwebsite\Excel\Facades\Excel::class
];

3. Publicar pacote

Execute o comando -

php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider" --tag=config

Isso criará um novo excel.phparquivo em config/.


4. Configuração do banco de dados

Abrir .envarquivo.

Especifique o host, o nome do banco de dados, o nome de usuário e a senha.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=tutorial
DB_USERNAME=root
DB_PASSWORD=

5. Criar Tabela

  • Crie uma nova tabela Employeesusando a migração e adicione alguns registros.
php artisan make:migration create_employees_table
  • Agora, navegue até a database/migrations/pasta da raiz do projeto.
  • Encontre um arquivo PHP que termine com create_employees_tablee abra-o.
  • Defina a estrutura da tabela no up()método.
public function up()
{
    Schema::create('employees', function (Blueprint $table) {
        $table->id();
        $table->string('username');
        $table->string('name');
        $table->string('email');
        $table->smallInteger('age');
        $table->timestamps();
    });
}
  • Execute a migração –
php artisan migrate
  • A tabela foi criada.

6. Modelo

  • Criar Employeesmodelo.
php artisan make:model Employees
  • Abrir  app/Models/Employees.php arquivo.
  • Especifique atributos de modelo atribuíveis em massa – nome de usuário, nome, email e idade usando a $fillablepropriedade.

Código concluído

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Employees extends Model
{
    use HasFactory;

    protected $fillable = [
       'username','name','email','age'
    ];
}

7. Criar classe de importação

Estou criando 2 classes de importação apenas para fins de exemplo -

1. Classe de importação de funcionários -

php artisan make:import EmployeesImport --model=Employees
  • Abrir  app/Imports/EmployeesImport.php arquivo.
  • A classe tem 1 método –
    • model() – Lê os valores do $rowArray e insere um registro se o ID do email não existir na employeestabela, caso contrário, retorna null.

NOTA – Esta classe de importação começa a ler os registros da 1ª linha. Expliquei como pular a primeira linha que contém o título na próxima classe de importação.

Arquivo CSV sem linha de cabeçalho –

usuário1Usuário1 u1user1@makitweb.com28
usuário2Usuário2 u2user2@makitweb.com24

Código concluído

<?php
namespace App\Imports;

use App\Models\Employees;
use Maatwebsite\Excel\Concerns\ToModel;

class EmployeesImport implements ToModel {
    /**
    * @param array $row
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */
    public function model(array $row) {
 
       // Check email already exists
       $count = Employees::where('email',$row[2])->count();
       if($count > 0){
          return null;
       }
       return new Employees([
          'username' => $row[0],
          'name' => $row[1], 
          'email' => $row[2],
          'age' => $row[3],
       ]);
    }

}

2. Empregados2 Classe de Importação -

php artisan make:import Employees2Import --model=Employees
  • Abrir  app/Imports/Employees2Import.php arquivo.
  • A classe tem 2 métodos –
    • collection() – Valida $rowsos dados do Array. Se validado com sucesso, insira o registro se o ID do email não existir na employeestabela, caso contrário, retorne o erro.

OBSERVAÇÃO – Se  WithHeadingRowfor implementado, $rowsArrays conterá cabeçalho de linha como nomes de chave em vez de índice.

  • headerRow() – Retorna a posição do índice do título.

Arquivo CSV com linha de título –

Nome de usuárioNomeE-mailEra
yssyogeshYogesh singhyogesh@makitweb.com28
bsonarikaSonarika Bhadoriabsonarika@makitweb.com28
vishalVishal Sahuvishal@makitweb.comtrigésimo primeiro

Código concluído

<?php

namespace App\Imports;

use App\Models\Employees;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Illuminate\Support\Facades\Validator;

class Employees2Import implements ToCollection ,WithHeadingRow
{

    public function collection(Collection $rows){

       // Validate
       Validator::make($rows->toArray(), [
          '*.username' => 'required|string',
          '*.name' => 'required|string',
          '*.email' => 'required|email',
          '*.age' => 'required|integer',
       ],[
          '*.username.required'=> "The username field is required.",
          '*.username.string'=> "The username must be string.",
          '*.name.required'=> "The name field is required.",
          '*.name.string'=> "The name must be string.",
          '*.email.required'=> "The email field is required.",
          '*.email.email'=> "The email must be a valid email address.",
          '*.age.integer'=> "The age must be an integer."
       ])->validate();

       foreach ($rows as $row) {

          // Check email already exists
          $count = Employees::where('email',$row['email'])->count();
          if($count > 0){
             continue;
          }
          Employees::create([
             'username' => $row['username'],
             'name' => $row['name'], 
             'email' => $row['email'],
             'age' => $row['age'],
         ]);
       }
    }

    // Specify header row index position to skip
    public function headingRow(): int {
       return 1;
    }
}

8. Rota

  • Abrir  routes/web.php arquivo.
  • Defina 3 rotas –
    • / –  Carregar visualização de índice.
    • empregados/importdata – Post rota para Importar dados.
    • funcionários/validateandimportdata – Post rota para validar e importar dados.

Código concluído

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\EmployeesController;

Route::get('/', [EmployeesController::class, 'index'])->name('home'); 
Route::post('employees/importdata/', [EmployeesController::class, 'importData'])->name('employees.importdata');
Route::post('employees/validateandimportdata/', [EmployeesController::class, 'validateAndImportdata'])->name('employees.validateandimportdata');

9. Controlador

  • Criar  EmployeesController controlador.
php artisan make:controller EmployeesController
  • Abrir  app/Http/Controllers/EmployeesController.php arquivo.
  • Importar   e  . EmployeesImportEmployees2ImportExcel
  • Crie 3 métodos –
    • index() – Carregar indexvisualização.
    • importdata() – Para importar chame Excel::import().

Passe 2 parâmetros –

  1. EmployeesImportInstância de classe.
  2. Passe o local 'temp' do arquivo selecionado.
    • validateAndImportdata() – Novamente chame Excel::import().

Passe 2 parâmetros –

  1. Employees2ImportInstância de classe.
  2. Passe o local do arquivo armazenado (guardei o arquivo na public/employees.xlsxpasta).

Código concluído

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Imports\EmployeesImport;
use App\Imports\Employees2Import;
use Excel;

class EmployeesController extends Controller
{
   public function index(){
      return view('index');
   }

   // Import data 
   public function importdata(Request $request){
      Excel::import(new EmployeesImport, $request->file('file')->store('temp'));
      return back()->with('success', 'Import successfully!');
   }

   // Validate and Import data 
   public function validateAndImportdata(Request $request){

      Excel::import(new Employees2Import, "employees.xlsx");
      return back()->with('success', 'Import successfully!');
   }

}

10. Visualizar

Criar  index.blade.php arquivo na  resources/views/ pasta.

Criar 2 <form>-

  • Na 1ª <form >ação definida para {{ route('employees.importdata') }}. Crie um elemento de arquivo e um botão de envio.
  • Na 2ª <form>ação defina para {{ route('employees.validateandimportdata') }}. Crie um botão de envio.

Faça um loop $errors->all()para exibir erros.

Código concluído

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1">
   <title>How to Import data into MySQL database in Laravel 8</title>

   <!-- CSS -->
   <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" >
</head>
<body>

   <div class="container mt-5">

      <!-- Success message -->
      @if(Session::has('success'))
         <div class="alert alert-success">
            {{ Session::get('success') }}
         </div>
      @endif

      <form method='post' action="{{ route('employees.importdata') }}" enctype="multipart/form-data">
         @csrf
         <div class="mb-3">
            <label for="file" class="form-label">File</label>
            <input type="file" class="form-control" id="file" name="file" value="">
         </div>

         <button type="submit" class="btn btn-success">Import</button>
      </form>

      <!-- Import data with validation -->
      <h2 class='mt-5'>Validate and import data</h2>
      {{-- Display errors --}}
      @if (count($errors) > 0)
         <div class="row">
            <div class="col-md-12 ">
                <div class="alert alert-danger">
                   <ul>
                      @foreach($errors->all() as $error)
                         <li>{{ $error }} </li>
                      @endforeach 
                   </ul> 
                </div>
            </div>
         </div>
      @endif

      <form method='post' action="{{ route('employees.validateandimportdata') }}" >
         @csrf
         <button type="submit" class="btn btn-success">Import</button>
      </form>
   </div>

</body>
</html>

11. Saída

Ver saída


12. Conclusão

Certifique-se de validar o registro antes de inserir ou atualizar registros na classe Import. Especifique WithHeadingRowna classe Import apenas se o arquivo de importação tiver uma linha de cabeçalho.

Fonte: https://makitweb.com

#laravel #php #mysql 

Como exportar banco de dados de EML para o formato PST?

O usuário agora pode converter seus arquivos EML para o formato PST apenas instalando este conversor em seu PC. O conversor EML para PST converte seus dados com total precisão, sem prejudicar os dados a qualquer custo. O aplicativo é confiável e fácil de usar.

A conversão de alta velocidade e a taxa de precisão de 100% proporcionam uma economia de tempo aos usuários. Além disso, uma versão demo também está disponível para todos os usuários verem o funcionamento do software.

Por que usar o conversor EML para PST

Converter o arquivo EML para o formato PST vai demorar muito se for feito manualmente, mas pode ser feito em alta velocidade usando o conversor EML para PST. Portanto, antes de qualquer conhecimento adicional, vamos primeiro saber sobre o conversor de EML para PST.

  • O aplicativo é executado sem problemas em todos os sistemas operacionais Windows.
  • O aplicativo pode converter os arquivos em massa.
  • Os dados podem ser salvos automaticamente pelo conversor.
  • A conversão é feita em alta velocidade.
  • O resultado obtido após a conversão é 100% preciso.
  • Para utilizar o aplicativo o usuário não necessita de suporte técnico ou assistência.
  • Os usuários podem salvar o arquivo em qualquer local de sua escolha.
  • Uma versão demo gratuita está disponível para verificar as pastas.

Um atributo chave do conversor EML para PST

O conversor de EML para PST possui muitos dos recursos que o tornam um conversor único e confiável. Portanto, a seguir estão alguns dos recursos deste conversor inteligente:

1. Fornece apenas conversão específica
O aplicativo converte apenas arquivos EML específicos para o formato PST, o que é saudável. O conversor é compatível com todas as versões do Windows.

2. Suporta conversão em massa
Este aplicativo inteligente pode converter arquivos EML em formato PST em massa. Todos os arquivos convertidos são salvos em uma pasta PST e formam um arquivo forte do Outlook.

3. Conversão de dados saudáveis
O aplicativo converte apenas os arquivos que não estão corrompidos. Portanto, o resultado é 100% preciso com perda zero de dados. Portanto, o resultado atende às expectativas do usuário.

4. Salvamento automático de dados
Os usuários podem salvar os dados em qualquer local ou usar a opção padrão. Portanto, o usuário pode salvar automaticamente seus dados convertidos. Portanto, o usuário acha fácil salvar os dados.

5. Mantém os dados na ordem hierárquica
O aplicativo mantém os dados na ordem hierárquica e a originalidade dos dados também é mantida durante todo o processo de conversão.

Palavras Finais

Os usuários agora podem converter os arquivos EML em PST usando este conversor. O aplicativo está pronto para funcionar em várias versões do Windows sem nenhum obstáculo. Os usuários podem usar a versão demo gratuita antes de usar o aplicativo.

Mais informações:- https://www.datavare.com/pt/conversor-eml-para-pst.html

#conversor eml para pst #eml para pst exportador #eml para pst importador #importar eml para pst #converter eml para pst #exportar eml para pst

joe biden

1615785369

Converta e-mails EML para Adobe PDF com o conversor de EML para PDF

Para converter arquivos EML em formato PDF, o Datavare é o aplicativo mais adequado. O aplicativo oferece muitas vantagens para que os usuários possam converter os arquivos facilmente. Isso ajuda a fazer uma conversão direta. O aplicativo é mais adequado para cada usuário e, portanto, converte os arquivos EML de uma forma precisa e sem erros. Qualquer usuário pode fazer a conversão de arquivos EML para o formato PDF, pois o aplicativo é muito fácil de operar. Usuários sem formação técnica também podem usar este aplicativo incrível sem qualquer problema.

Embora o aplicativo seja muito avançado, ainda assim, com sua interface gráfica amigável, é fácil converter arquivos EML para o formato PDF. Para tal não é necessária qualquer tipo de assistência técnica. A tarefa de conversão é fácil e simples de fazer com este aplicativo de terceiros. É um aplicativo altamente compatível que funciona perfeitamente em qualquer versão do Windows. Para usar o aplicativo, não é necessário que a versão do Windows seja a mais recente ou a mais antiga.

Além disso, há muitas vantagens em usar esse aplicativo notável. Vamos falar sobre algumas dessas vantagens que ela confere:

  • Concede conversão direta
  • Transfere arquivos em alta velocidade
  • Sem restrição de tamanho
  • Aplicação independente
  • Conversão sem erros

Essas vantagens tornam o aplicativo mais adequado para uso. Vale a pena usar este aplicativo para converter arquivos EML em formato PDF. Baixe sua versão de teste agora.

Passos para conversão

Para continuar a tarefa de conversão, é necessário seguir alguns passos. O processo de conversão ocorre em um processo passo a passo. Essas etapas são muito fáceis de executar por qualquer usuário. Não há necessidade de nenhuma orientação técnica para auxiliar essas etapas.

Agora, vamos apenas dar uma olhada nessas etapas simples, depois de baixar e iniciar o aplicativo;
Passo 1- Abra o aplicativo e escolha os arquivos EML que você deseja apenas converter.
Etapa 2 - Escolha o local onde deseja salvar os arquivos convertidos.
Etapa 3- Clique no botão converter agora.

Com essas 3 etapas fáceis, você pode converter seus arquivos EML em formato PDF.

Essas etapas são muito fáceis, e o aplicativo também fornece instantâneos adequados das etapas fornecidas para a assistência adequada do usuário. Além disso, uma interface de usuário fácil é fornecida pelo aplicativo para oferecer suporte a seus usuários. Em primeiro lugar, use a versão demo do aplicativo.

Características principais

Com muitas vantagens, o aplicativo também disponibiliza alguns recursos fundamentais aos seus usuários para a melhor conversão dos arquivos EML. Vejamos alguns desses recursos:

Conversão perfeita
Com uma velocidade rápida, é imprescindível que seus arquivos sejam convertidos na perfeição, sem nenhuma alteração dos dados. Este aplicativo é adequado para converter seus dados na perfeição.

Conversão seletiva
É necessário que os arquivos que você escolher sejam os que somente devem ser convertidos. Portanto, este aplicativo inteligente converte apenas os arquivos que você seleciona para a conversão. Não, outros arquivos EML são convertidos para o formato PSF.

Conversão em lote
Os dados que você escolher são convertidos em lotes. Isso significa que você pode escolher os arquivos que deseja converter ou pode escolher a pasta. Somando-se a isso, a filtragem de arquivos é fornecida no modo de arquivo

Salve os dados de acordo
Você pode escolher os arquivos a serem convertidos, bem como o local. O aplicativo oferece suporte ao salvamento personalizado de dados. Isso significa que, sem qualquer obrigação, você pode salvar seus dados de forma fácil e adequada. Esses recursos fornecem um resultado proveitoso para os usuários.

Declaração final

Os usuários podem baixar o EML para PDF Converter para converter seus arquivos EML para o formato PD. O aplicativo é fácil de usar em qualquer versão do Windows. O usuário pode converter quantos arquivos quiser sem qualquer obrigação, uma vez que adquira a versão licenciada do aplicativo.

Recursos como conversão em alta velocidade, excelente precisão e grande compatibilidade tornam o uso do aplicativo mais útil. Este aplicativo independente executa a tarefa de conversão diretamente sem qualquer problema. Portanto, experimente a versão demo gratuita do aplicativo agora e examine-o convertendo seus poucos arquivos EML em formato PDF.
Se você enfrentar algum tipo de problema também pode entrar em contato com o número de atendimento ao cliente fornecido pelo aplicativo ao seu usuário. Este serviço de ajuda ao cliente está disponível 24 horas por dia, 7 dias por semana.

Mais informações:- https://www.datavare.com/software/eml-to-pdf-converter-expert.html

#conversor de eml para pdf #migração de eml para pdf #exportador de eml para pdf #converter eml para pdf #importar eml para pdf

Neil  Morgan

Neil Morgan

1656727380

Como Exportar O Banco De Dados MySQL No formato CSV E Excel No Laravel

No Laravel, você não precisa escrever código longo para exportar seus dados, já existe um pacote disponível para isso – Laravel Excel.

Permite exportar dados em vários formatos como – XLSX, CSV, XLS, HTML, etc.

Neste tutorial, mostro como você pode exportar dados do banco de dados MySQL no formato CSV e Excel usando o pacote Laravel Excel no Laravel 8.


1. Instale o pacote

Requerimento -

  • PHP: ^7.2\|^8.0
  • Laravel: ^5.8
  • Planilha Php: ^1.21
  • psr/cache simples: ^1.0
  • Extensão PHP  php_zip habilitada
  • Extensão PHP  php_xml habilitada
  • Extensão PHP  php_gd2 habilitada
  • Extensão PHP  php_iconv habilitada
  • Extensão PHP  php_simplexml habilitada
  • Extensão PHP  php_xmlreader habilitada
  • Extensão PHP  php_zlib habilitada

Instale o pacote usando o compositor –

composer require maatwebsite/excel

Se você estiver recebendo um erro ao executar o comando acima, execute o comando abaixo –

composer require psr/simple-cache:^1.0 maatwebsite/excel

Depois disso, execute novamente –

composer require maatwebsite/excel

2. Atualize app.php

  • Abrir  config/app.php arquivo.
  • Adicione o seguinte Maatwebsite\Excel\ExcelServiceProvider::class em  'providers' –
'providers' => [
      ....
      ....
      ....  
      Maatwebsite\Excel\ExcelServiceProvider::class
];
  • Adicione o seguinte  'Excel' => Maatwebsite\Excel\Facades\Excel::class em  'aliases' –
'aliases' => [
     .... 
     .... 
     .... 
     'Excel' => Maatwebsite\Excel\Facades\Excel::class
];

3. Publicar pacote

Execute o comando -

php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider" --tag=config

Isso criará um novo excel.phparquivo em config/.


4. Configuração do banco de dados

Abrir .envarquivo.

Especifique o host, o nome do banco de dados, o nome de usuário e a senha.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=tutorial
DB_USERNAME=root
DB_PASSWORD=

5. Criar Tabela

  • Crie uma nova tabela Employeesusando a migração e adicione alguns registros.
php artisan make:migration create_employees_table
  • Agora, navegue até a database/migrations/pasta da raiz do projeto.
  • Encontre um arquivo PHP que termine com create_employees_tablee abra-o.
  • Defina a estrutura da tabela no up()método.
public function up()
{
    Schema::create('employees', function (Blueprint $table) {
        $table->id();
        $table->string('username');
        $table->string('name');
        $table->string('email');
        $table->smallInteger('age');
        $table->timestamps();
    });
}
  • Execute a migração –
php artisan migrate
  • A tabela está sendo criada e adicione alguns registros nela.

6. Modelo

  • Criar Employeesmodelo.
php artisan make:model Employees
  • Abrir  app/Models/Employees.php arquivo.
  • Especifique atributos de modelo atribuíveis em massa – nome de usuário, nome, email e idade usando a $fillablepropriedade.

Código concluído

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Employees extends Model
{
    use HasFactory;

    protected $fillable = [
       'username','name','email','age'
    ];
}

7. Criar classe de exportação

Estou criando 2 classes de exportação apenas para fins de exemplo -

1. Classe de Exportação de Funcionários -

php artisan make:export EmployeesExport --model=Employees
  • Abrir  app/Exports/EmployeesExport.php arquivo.

A classe tem 2 métodos –

  • collection() – Carrega dados de exportação. Aqui, você pode –
    • Retorna todos os registros.
    • Retorne colunas específicas ou modifique a resposta de retorno que fiz na próxima classe Export.
  • headers() – Especifique a linha do cabeçalho.

NOTA – Remova os métodos headers() se você não quiser adicionar uma linha de cabeçalho.

Código concluído

<?php

namespace App\Exports;

use App\Models\Employees;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;

class EmployeesExport implements FromCollection, WithHeadings
{

    /**
    * @return \Illuminate\Support\Collection
    */
    public function collection()
    {
        ## 1. Export all data
        // return Employees::all();

        ## 2. Export specific columns
        return Employees::select('id','username','name')->get();

    }

    public function headings(): array
    {
        return [
          '#',
          'Username',
          'Name'
        ];
    }
}

2. FuncionáriosPor Classe de Exportação de Idade –

php artisan make:export EmployeesByAgeExport --model=Employees
  • Abrir  app/Exports/EmployeesByAgeExport.php arquivo.
  • Nesta classe, adicionei __construct()para permitir o envio de um parâmetro ao criar a instância da classe e usá-lo para recuperar dados.
  • Após inicializar o $resultArray passe $resultpara collect()retorno –return collect($result);
  • Mencione os nomes das linhas de cabeçalho no heading()método.

Código concluído

<?php

namespace App\Exports;

use App\Models\Employees;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;

class EmployeesByAgeExport implements FromCollection, WithHeadings
{
    private $agegreaterthan;

    public function __construct($age=0) 
    {
        $this->agegreaterthan = $age;
    }

    /**
    * @return \Illuminate\Support\Collection
    */
    public function collection()
    {
        ## 3. Conditional export and customize result
        $records = Employees::select('*')->where('age','>',$this->agegreaterthan)->get();

        $result = array();
        foreach($records as $record){
           $result[] = array(
              'id'=>$record->id,
              'username' => $record->username,
              'name' => $record->name,
              'email' => $record->email,
              'age' => $record->age,
              'status' => 1 // Custom data
           );
        }

        return collect($result);
    }

    public function headings(): array
    {
       return [
         '#',
         'Username',
         'Name',
         'Email',
         'Age',
         'Status'
       ];
    }
}

8. Rota

  • Abrir  routes/web.php arquivo.
  • Defina 4 rotas –
    • / –  Carregar visualização de índice.
    • funcionários/exportcsv – Exporta dados em formato CSV.
    • funcionários/exportexcel – Exporta dados em formato Excel.
    • funcionários/exportbyagecsv – rota POST para exportar dados por idade.

Código concluído

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\EmployeesController;

Route::get('/', [EmployeesController::class, 'index'])->name('home'); 
Route::get('employees/exportcsv', [EmployeesController::class, 'exportCSV'])->name('employees.exportcsv');
Route::get('employees/exportexcel', [EmployeesController::class, 'exportExcel'])->name('employees.exportexcel');
Route::post('employees/exportbyagecsv', [EmployeesController::class, 'exportByAgeCSV'])->name('employees.exportbyagecsv');

9. Controlador

  • Criar  EmployeesController controlador.
php artisan make:controller EmployeesController
  • Abrir  app/Http/Controllers/EmployeesController.php arquivo.
  • Importar e . EmployeesExportEmployeesByAgeExportExcel
  • Crie 4 métodos –
    • index() – Carregar indexvisualização.
    • exportCSV() –  Para exportar dados, chame Excel::download().

Leva 2 parâmetros -

  1. Instância de classe.
  2. Nome do arquivo com extensão.
$file_name = 'employees_'.date('Y_m_d_H_i_s').'.csv'; 
return Excel::download(new EmployeesExport, $file_name);
  • exportExcel() – Usando o mesmo código acima e altere a extensão do arquivo para .xlsx.
  • exportByAgeCSV() – Leia o valor de idade POST e passe-o com EmployeesByAgeExport($age)instância.
$file_name = 'employees_'.date('Y_m_d_H_i_s').'.csv'; 
return Excel::download(new EmployeesByAgeExport($age), $file_name);

Código concluído

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Exports\EmployeesExport;
use App\Exports\EmployeesByAgeExport;
use Excel;

class EmployeesController extends Controller
{
    public function index(){
       return view('index');
    }

    // CSV Export
    public function exportCSV(){
       $file_name = 'employees_'.date('Y_m_d_H_i_s').'.csv';
       return Excel::download(new EmployeesExport, $file_name);
    }

    // Excel Export
    public function exportExcel(){
       $file_name = 'employees_'.date('Y_m_d_H_i_s').'.xlsx';
       return Excel::download(new EmployeesExport, $file_name);
    }

    // Conditional Export (csv)
    public function exportByAgeCSV(Request $request){

       $age = $request->age;

       $file_name = 'employees_'.date('Y_m_d_H_i_s').'.csv';
       return Excel::download(new EmployeesByAgeExport($age), $file_name);
    }
}

10. Visualizar

Criar  index.blade.php arquivo na  resources/views/ pasta.

Crie 2 elementos âncora –

  1. Definido hrefcomo {{ route('employees.exportcsv') }}para exportação CSV.
  2. Defina hrefcomo {{ route('employees.exportexcel') }}para exportação do Excel.

Crie um <form method='post' action="{{ route('employees.exportbyagecsv') }}">. Adicione um elemento de entrada para inserir a idade e um botão de envio.

Código concluído

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1"> 
   <title>How to Export data to CSV & Excel format in Laravel 8</title>

   <!-- CSS -->
   <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" >
</head>
<body>

   <div class="container mt-5">

      <a class="btn btn-primary" href="{{ route('employees.exportcsv') }}">CSV Export</a> &nbsp;&nbsp;
      <a class="btn btn-primary" href="{{ route('employees.exportexcel') }}">Excel Export</a><br><br>

      <form method='post' action="{{ route('employees.exportbyagecsv') }}">
         @csrf
         <div class="mb-3">
            <label for="age" class="form-label">Age</label>
            <input type="number" class="form-control" id="age" name="age" value="0">
         </div>

         <button type="submit" class="btn btn-success">Export</button>
      </form>
   </div>

</body>
</html>

11. Demonstração

Ver demonstração


12. Conclusão

Use o construtor na classe Export para manipular os parâmetros passados ​​e use-o para buscar dados.

Neste tutorial, mencionei apenas 2 formatos de exportação – CSV e Excel, mas há mais formatos disponíveis.

Fonte: https://makitweb.com

#php #laravel #mysql 

Joe  Hoppe

Joe Hoppe

1595905879

Best MySQL DigitalOcean Performance – ScaleGrid vs. DigitalOcean Managed Databases

HTML to Markdown

MySQL is the all-time number one open source database in the world, and a staple in RDBMS space. DigitalOcean is quickly building its reputation as the developers cloud by providing an affordable, flexible and easy to use cloud platform for developers to work with. MySQL on DigitalOcean is a natural fit, but what’s the best way to deploy your cloud database? In this post, we are going to compare the top two providers, DigitalOcean Managed Databases for MySQL vs. ScaleGrid MySQL hosting on DigitalOcean.

At a glance – TLDR
ScaleGrid Blog - At a glance overview - 1st pointCompare Throughput
ScaleGrid averages almost 40% higher throughput over DigitalOcean for MySQL, with up to 46% higher throughput in write-intensive workloads. Read now

ScaleGrid Blog - At a glance overview - 2nd pointCompare Latency
On average, ScaleGrid achieves almost 30% lower latency over DigitalOcean for the same deployment configurations. Read now

ScaleGrid Blog - At a glance overview - 3rd pointCompare Pricing
ScaleGrid provides 30% more storage on average vs. DigitalOcean for MySQL at the same affordable price. Read now

MySQL DigitalOcean Performance Benchmark
In this benchmark, we compare equivalent plan sizes between ScaleGrid MySQL on DigitalOcean and DigitalOcean Managed Databases for MySQL. We are going to use a common, popular plan size using the below configurations for this performance benchmark:

Comparison Overview
ScaleGridDigitalOceanInstance TypeMedium: 4 vCPUsMedium: 4 vCPUsMySQL Version8.0.208.0.20RAM8GB8GBSSD140GB115GBDeployment TypeStandaloneStandaloneRegionSF03SF03SupportIncludedBusiness-level support included with account sizes over $500/monthMonthly Price$120$120

As you can see above, ScaleGrid and DigitalOcean offer the same plan configurations across this plan size, apart from SSD where ScaleGrid provides over 20% more storage for the same price.

To ensure the most accurate results in our performance tests, we run the benchmark four times for each comparison to find the average performance across throughput and latency over read-intensive workloads, balanced workloads, and write-intensive workloads.

Throughput
In this benchmark, we measure MySQL throughput in terms of queries per second (QPS) to measure our query efficiency. To quickly summarize the results, we display read-intensive, write-intensive and balanced workload averages below for 150 threads for ScaleGrid vs. DigitalOcean MySQL:

ScaleGrid MySQL vs DigitalOcean Managed Databases - Throughput Performance Graph

For the common 150 thread comparison, ScaleGrid averages almost 40% higher throughput over DigitalOcean for MySQL, with up to 46% higher throughput in write-intensive workloads.

#cloud #database #developer #digital ocean #mysql #performance #scalegrid #95th percentile latency #balanced workloads #developers cloud #digitalocean droplet #digitalocean managed databases #digitalocean performance #digitalocean pricing #higher throughput #latency benchmark #lower latency #mysql benchmark setup #mysql client threads #mysql configuration #mysql digitalocean #mysql latency #mysql on digitalocean #mysql throughput #performance benchmark #queries per second #read-intensive #scalegrid mysql #scalegrid vs. digitalocean #throughput benchmark #write-intensive