Export Polish Letters in Laravel-Excel - No More Broken Characters!
March 5, 2024
1. Installing the Laravel-Excel Package
composer require maatwebsite/excel
2. Creating an Exporter (for Laravel-Excel)
php artisan make:export UsersExport --model=User
3. Configuring the Exporter
...
namespace App\Exports;
use App\Models\User;
use Maatwebsite\Excel\Concerns\FromCollection;
class UsersExport implements FromCollection
{
public function collection()
{
return User::all();
}
}
4. Adding Headers and UTF-8 Encoding
...
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Response as FacadeResponse;
class ExportController extends Controller
{
public function exportCsv()
{
$users = User::all(['id', 'name', 'email']);
$csvData = "\xEF\xBB\xBF";
$csvData .= "ID,First name and last name,Email\n";
foreach ($users as $user) {
$csvData .= "{$user->id},\"{$user->name}\",{$user->email}\n";
}
return FacadeResponse::make($csvData, 200, [
'Content-Type' => 'text/csv; charset=UTF-8',
'Content-Disposition' => 'attachment; filename="users.csv"',
]);
}
}
5. Use ExportController
Now somehow use the ExportController::class
, you can do this via routes.
6. Notes
The most important chunk is that:
$csvData = "\xEF\xBB\xBF";
$csvData .= "ID,First name and last name,Email\n";
...
'Content-Type' => 'text/csv; charset=UTF-8',
Reach out to me! Find me on linkedin!
Want to stay updated? Join my newsletter and get a weekly report on the most exciting industry news! 🚀