Rumah >rangka kerja php >Laravel >Pembangunan Laravel: Bagaimana untuk memproses fail Excel menggunakan Laravel Excel dan Spout?

Pembangunan Laravel: Bagaimana untuk memproses fail Excel menggunakan Laravel Excel dan Spout?

王林
王林asal
2023-06-15 09:12:441650semak imbas

Laravel ialah rangka kerja pembangunan PHP yang popular yang menyediakan banyak ciri dan sambungan untuk membantu pembangun membina aplikasi web dengan cepat. Salah satu tugas biasa ialah memproses fail Excel. Dalam artikel ini, kita akan belajar cara menggunakan Laravel Excel dan Spout untuk memproses fail Excel.

Laravel Excel ialah sambungan popular untuk mengimport dan mengeksport fail Excel. Ia menyediakan antara muka yang mudah dan mudah digunakan untuk membaca, menulis dan memanipulasi fail Excel. Spout ialah perpustakaan PHP yang lebih pantas yang direka untuk membaca dan menulis fail Excel yang besar.

Pertama, kita perlu memasang sambungan ini. Dalam Laravel 5.5 dan ke atas, Laravel Excel boleh dipasang dengan arahan berikut:

composer require maatwebsite/excel

Untuk Spout, ia boleh dipasang dengan arahan berikut:

composer require box/spout

Setelah sambungan ini dipasang, kami Anda boleh mula menggunakannya untuk memproses fail Excel.

Membaca Fail Excel

Untuk membaca fail Excel, kita perlu menggunakan kelas Excel yang disediakan oleh Laravel Excel. Berikut ialah contoh mudah yang akan membaca semua data sel dalam fail Excel dan mengembalikan tatasusunan dua dimensi:

use MaatwebsiteExcelFacadesExcel;

$rows = Excel::load('example.xlsx')->all()->toArray();

Dalam contoh ini, kaedah all() akan mengembalikan objek Collection, Ia mengandungi semua data baris dan lajur dalam fail Excel. Kaedah toArray() menukar objek Koleksi kepada tatasusunan dua dimensi yang mudah, contohnya:

[
    [
        "Name" => "John Doe",
        "Email" => "johndoe@example.com",
        "Age" => 30
    ],
    [
        "Name" => "Jane Doe",
        "Email" => "janedoe@example.com",
        "Age" => 28
    ],
    // ...
]

Kita boleh menggunakan kaedah get() untuk mendapatkan baris atau lajur tertentu. Contohnya, untuk mendapatkan lajur pertama data, anda boleh menggunakan kod berikut:

$column = Excel::load('example.xlsx')->get()[0];

Tulis ke fail Excel

Untuk menulis data ke fail Excel, kita perlu menggunakan penulis Laravel Excel kelas. Berikut ialah contoh mudah yang akan mencipta fail Excel yang mengandungi data:

use MaatwebsiteExcelFacadesExcel;
use MaatwebsiteExcelWriter;
use MaatwebsiteExcelClassesPHPExcel;

Excel::create('example', function(Writer $writer) {
    $writer->setTitle('My First Excel');
    $writer->setCreator('John Doe');
    $writer->setDescription('A demonstration of using Laravel Excel');

    $writer->sheet('Sheet1', function($sheet) {
        $sheet->fromArray([
            ['Name', 'Email', 'Age'],
            ['John Doe', 'johndoe@example.com', 30],
            ['Jane Doe', 'janedoe@example.com', 28]
        ]);
    });
})->download('xlsx');

Dalam contoh ini, kami akan menggunakan kaedah create() untuk mencipta fail Excel baharu. Dalam fungsi panggil balik, kita boleh menetapkan tajuk, pencipta dan perihalan fail Excel. Kaedah sheet() akan mencipta lembaran kerja baharu dan menulis data ke dalamnya. Akhir sekali, kaedah download() memuat turun fail Excel sebagai respons. Dalam kes ini, fail akan dimuat turun dalam format XLSX.

Gunakan Spout untuk memproses fail Excel

Spout ialah perpustakaan PHP ringan yang direka untuk membaca dan menulis fail Excel yang besar. Berikut ialah contoh mudah yang akan membaca data daripada fail Excel menggunakan Spout:

use BoxSpoutReaderReaderFactory;
use BoxSpoutCommonType;

$reader = ReaderFactory::create(Type::XLSX);
$reader->open('example.xlsx');

foreach ($reader->getSheetIterator() as $sheet) {
    foreach ($sheet->getRowIterator() as $row) {
        $data[] = $row->toArray();
    }
}

$reader->close();

Dalam contoh ini, kami telah mencipta objek ReaderFactory melalui kelas $reader untuk membaca dokumen Excel. Melalui kaedah getSheetIterator() dan getRowIterator(), kita boleh mendapatkan lelaran lembaran kerja dan baris, dan boleh menggunakan kaedah toArray() untuk mendapatkan data sel. Kaedah $reader->close() digunakan untuk menutup fail Excel.

Begitu juga, kita boleh menggunakan kelas WriterFactory Spout dan kelas Sheet untuk menulis data ke fail Excel.

use BoxSpoutWriterWriterFactory;
use BoxSpoutCommonType;

$writer = WriterFactory::create(Type::XLSX);
$writer->openToFile('example.xlsx');

$writer->addRow(['Name', 'Email', 'Age']);
$writer->addRow(['John Doe', 'johndoe@example.com', 30]);
$writer->addRow(['Jane Doe', 'janedoe@example.com', 28]);

$writer->close();

Dalam contoh ini, kami menggunakan kelas WriterFactory untuk mencipta objek $writer dan membuka fail Excel melalui kaedah openToFile(). Gunakan kaedah addRow() untuk menambah data pada lembaran kerja, dan akhirnya gunakan kaedah close() untuk menutup fail Excel.

Kesimpulan

Dalam artikel ini, kami mempelajari cara menggunakan Laravel Excel dan Spout untuk memproses fail Excel. Laravel Excel menyediakan cara yang mudah untuk membaca, menulis dan mengubah suai fail Excel melalui antara muka yang mudah. Spout, sebaliknya, ialah perpustakaan PHP yang lebih pantas yang direka untuk membaca dan menulis fail Excel yang besar. Alat ini boleh memudahkan pemprosesan fail Excel dan membantu pembangun memproses dan mengurus data Excel dengan lebih mudah.

Atas ialah kandungan terperinci Pembangunan Laravel: Bagaimana untuk memproses fail Excel menggunakan Laravel Excel dan Spout?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn