>PHP 프레임워크 >Laravel >Laravel 개발: Laravel Excel을 사용하여 CSV 파일을 가져오고 내보내는 방법은 무엇입니까?

Laravel 개발: Laravel Excel을 사용하여 CSV 파일을 가져오고 내보내는 방법은 무엇입니까?

WBOY
WBOY원래의
2023-06-14 12:06:561927검색

Laravel은 업계에서 뛰어난 PHP 프레임워크 중 하나이며 강력한 기능과 사용하기 쉬운 API로 인해 개발자들 사이에서 매우 인기가 높습니다. 실제 개발 과정에서 데이터를 가져오고 내보내야 하는 경우가 종종 있는데, 널리 사용되는 데이터 형식인 CSV도 널리 사용되는 가져오기 및 내보내기 형식 중 하나가 되었습니다. 이 글에서는 Laravel Excel 확장 프로그램을 사용하여 CSV 파일을 가져오고 내보내는 방법을 소개합니다.

1. Laravel Excel 설치

먼저 Composer를 사용하여 Laravel Excel을 설치해야 합니다.

composer require maatwebsite/excel

설치가 완료된 후 config/app.php 파일의 공급자 배열에 다음 코드를 추가해야 합니다.

MaatwebsiteExcelExcelServiceProvider::class,

다음 코드를 별칭 배열에 추가합니다.

'Excel' => MaatwebsiteExcelFacadesExcel::class,

2. CSV 파일 내보내기

내보낼 데이터를 반환하는 getExportData() 메서드가 있는 사용자 모델 User가 있다고 가정합니다. 그런 다음 다음과 같이 내보내기 코드를 작성할 수 있습니다:

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',
        ];
    }
}

위 코드에서는 Laravel Excel의 FromQuery 및 WithHeadings 인터페이스를 사용하여 데이터를 CSV 파일로 빠르게 내보냅니다. FromQuery 인터페이스는 내보낼 데이터 세트를 반환하기 위해 query() 메서드를 구현해야 하며, WithHeadings 인터페이스는 CSV 파일의 헤더 정보를 반환하기 위해 headers() 메서드를 구현해야 합니다. 내보내기 작업에서는 Excel::download() 메서드를 사용하여 다운로드하고 내보내기 클래스 UserExport와 파일 이름 users.csv라는 두 가지 매개변수를 전달합니다.

사용자가 이 경로에 액세스하면 내보낸 CSV 파일을 직접 다운로드할 수 있습니다.

3. CSV 파일 가져오기

CSV 파일을 가져오려면 가져오기 클래스를 작성하고 FromCollection 인터페이스를 구현해야 합니다.

업로드된 CSV 파일을 허용하고 데이터를 데이터베이스로 가져오는 importUsers() 메서드가 있는 사용자 가져오기 모델이 있다고 가정합니다. 다음과 같이 작성할 수 있습니다.

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],
            ]);
        }
    }
}

위 코드에서는 UserImport 클래스를 정의하고 FromCollection 인터페이스를 구현했습니다. 여기서 collection() 메소드는 CSV 파일에서 가져온 데이터를 처리하고 이를 Collection 객체로 변환하는 데 사용됩니다. 이 예에서는 사용자를 생성하고 파일의 첫 번째 열을 사용자 이름으로 사용하고 두 번째 열을 이메일 주소로 사용합니다.

가져오기 기능을 구현할 때 Excel::import() 메서드를 사용하여 가져오기 클래스와 파일 경로를 전달해야 합니다. 이 메소드는 가져온 데이터의 배열을 반환하며 이를 다른 프로세서에 전달할 수 있습니다.

4. 요약

Laravel Excel 확장 프로그램을 사용하면 CSV 데이터를 Laravel 애플리케이션으로 쉽게 가져오고 내보낼 수 있습니다. 위의 예에서는 FromQuery, WithHeadings 및 FromCollection 인터페이스를 사용하여 데이터를 내보내고 가져왔습니다. 물론 Laravel Excel은 FromArray, WithTitle, WithMapping 등과 같은 다른 인터페이스도 지원합니다. 실제 프로젝트에서는 실제 필요에 따라 특정 데이터 가져오기 및 내보내기 작업을 완료하기 위해 적절한 인터페이스를 선택할 수 있습니다.

위 내용은 Laravel 개발: Laravel Excel을 사용하여 CSV 파일을 가져오고 내보내는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.