Laravel is one of the outstanding PHP frameworks in the industry. Its powerful functions and easy-to-use API make it very popular among developers. In actual development, we often need to import and export data, and CSV, as a widely used data format, has also become one of the commonly used import and export formats. This article will introduce how to use the Laravel Excel extension to import and export CSV files.
1. Install Laravel Excel
First, we need to use Composer to install Laravel Excel:
composer require maatwebsite/excel
After the installation is complete, we need to add in the config/app.php file Add the following code to the providers array:
MaatwebsiteExcelExcelServiceProvider::class,
Add the following code to the aliases array:
'Excel' => MaatwebsiteExcelFacadesExcel::class,
2. Export the CSV file
Suppose we have a user model User, which has A getExportData() method that returns the data to be exported. Then we can write the export code like this:
use MaatwebsiteExcelFacadesExcel; use AppModelsUser; class UserController extends Controller { public function exportUsers() { return Excel::download(new UserExport(), 'users.csv'); } } class UserExport implements FromQuery, WithHeadings { public function query() { return User::query(); } public function headings(): array { return [ 'ID', 'Name', 'Email', 'Created At', 'Updated At', ]; } }
In the above code, we use Laravel Excel’s FromQuery and WithHeadings interfaces to quickly export data to a CSV file. The FromQuery interface needs to implement a query() method to return the data set to be exported; the WithHeadings interface needs to implement a headings() method to return the header information of the CSV file. In the export operation, we use the Excel::download() method to download, passing in two parameters: the export class UserExport and the file name users.csv.
When users access this route, they can directly download the exported CSV file.
3. Import CSV files
To import CSV files, we need to write an import class and implement the FromCollection interface.
Suppose we have a User import model with an importUsers() method that accepts an uploaded CSV file and imports the data into the database. We can write like this:
use MaatwebsiteExcelFacadesExcel; use AppModelsUser; class UserController extends Controller { public function importUsers(Request $request) { $request->validate([ 'file' => 'required|mimes:csv,txt', ]); $path = $request->file('file')->getRealPath(); $data = Excel::import(new UserImport(), $path); return redirect()->back()->with('success', '导入成功'); } } class UserImport implements FromCollection { public function collection(Collection $rows) { foreach ($rows as $row) { User::create([ 'name' => $row[0], 'email' => $row[1], ]); } } }
In the above code, we define a UserImport class and implement the FromCollection interface. The collection() method here is used to process the data imported from the CSV file and convert it into a Collection object. In this example, we simply create a user and use the first column in the file as the username and the second column as the email address.
When implementing the import function, we need to use the Excel::import() method to pass in the import class and file path. This method will return an array of imported data, which we can pass into other processors.
4. Summary
Using the Laravel Excel extension, we can easily import and export CSV data into Laravel applications. In the above example, we used the FromQuery, WithHeadings and FromCollection interfaces to export and import data. Of course, Laravel Excel also supports other interfaces, such as FromArray, WithTitle, WithMapping, etc. In actual projects, we can choose the appropriate interface to complete specific data import and export work based on actual needs.
The above is the detailed content of Laravel development: How to import and export CSV files using Laravel Excel?. For more information, please follow other related articles on the PHP Chinese website!