Rumah  >  Artikel  >  rangka kerja php  >  Pembangunan Laravel: Bagaimana untuk membaca dan menulis fail Excel menggunakan Laravel Excel dan PHPOffice?

Pembangunan Laravel: Bagaimana untuk membaca dan menulis fail Excel menggunakan Laravel Excel dan PHPOffice?

PHPz
PHPzasal
2023-06-13 17:57:582654semak imbas

Dengan penggunaan meluas fail Excel dalam bidang perniagaan dan kewangan, menyepadukan fail Excel ke dalam aplikasi web telah menjadi salah satu kemahiran yang diperlukan oleh pembangun. Memandangkan Laravel ialah rangka kerja PHP yang popular, terdapat banyak pakej dalam ekosistemnya yang boleh membantu kami membaca dan menulis fail Excel. Artikel ini akan memperkenalkan cara menggunakan perpustakaan Laravel Excel dan PHPOffice untuk membaca dan menulis fail Excel dalam aplikasi Laravel.

Apakah itu Laravel Excel?

Laravel Excel ialah alat pemprosesan Excel yang berkuasa yang dibangunkan untuk rangka kerja Laravel. Alat ini menyediakan API yang mudah digunakan yang boleh membantu kami mengimport dan mengeksport fail Excel dengan mudah. Salah satu kelebihan utama alat ini ialah ia membenarkan manipulasi terus fail Excel tanpa bergantung pada perisian Excel.

Memasang Laravel Excel boleh dilakukan melalui Komposer. Pergi ke direktori projek Laravel dalam terminal dan jalankan arahan Komposer berikut:

composer require maatwebsite/excel

Perintah ini akan memuat turun versi terkini Laravel Excel daripada Packagist dan melengkapkan proses pemasangan secara automatik.

Bagaimana untuk mengeksport fail Excel menggunakan Laravel Excel?

Laravel Excel menyediakan kelas Excel, iaitu kelas proksi yang melaluinya anda boleh membuat fail Excel baharu atau membuka dan mengedit fail Excel sedia ada. Kita boleh menggunakan kelas ini untuk mengeksport fail Excel dalam aplikasi Laravel.

Buat fail Excel baharu dalam projek, kami boleh menggunakan templat berikut yang disediakan oleh Laravel Excel:

<?php

namespace AppExports;

use MaatwebsiteExcelConcernsFromCollection;
use MaatwebsiteExcelConcernsWithHeadings;

class ExampleExport implements FromCollection, WithHeadings
{
    public function headings(): array
    {
        return [
            'ID',
            'Name',
            'Email',
            'Phone',
        ];
    }

    /**
    * @return IlluminateSupportCollection
    */
    public function collection()
    {
        return User::select('id', 'name', 'email', 'phone')->get();
    }
}

Dalam kod di atas, kami telah menentukan kelas yang dipanggil ExampleExport. Kelas ini menggunakan antara muka FromCollection dan WithHeadings, yang menyediakan kaedah yang diperlukan untuk menjana fail Excel.

Dalam kaedah tajuk(), kami mentakrifkan tajuk fail Excel, yang disenaraikan dalam baris pertama lembaran kerja Excel. Dalam kaedah collect(), kami mendapatkan semula rekod pengguna daripada pangkalan data dan mengembalikannya kepada pengawal yang dipanggil kelas.

Untuk mengeksport fail Excel, kami boleh membuat contoh ContohExport dalam kaedah pengawal seperti berikut:

public function export()
{
    return Excel::download(new ExampleExport, 'users.xlsx');
}

Dalam kod di atas, kami menggunakan kaedah muat turun() yang disediakan oleh Laravel Excel daripada ExampleExport mengeksport an Fail Excel. Kaedah ini memerlukan dua parameter: parameter pertama ialah contoh ExampleExport, dan parameter kedua ialah nama fail Excel.

Apabila anda mengakses URL kaedah eksport dalam penyemak imbas anda, anda akan digesa untuk memuat turun fail users.xlsx.

Bagaimana untuk mengimport fail Excel menggunakan Laravel Excel?

Apabila membaca fail Excel dan mengimport datanya ke dalam pangkalan data, kita boleh menggunakan kaedah import() yang disediakan oleh Laravel Excel. Kaedah ini menerima tiga parameter: objek fail, panggilan balik tugas dan nama lembaran kerja.

Untuk menunjukkan cara mengimport fail Excel, kami akan mencipta kelas yang dipanggil UserImport seperti yang ditunjukkan di bawah:

<?php

namespace AppImports;

use AppUser;
use MaatwebsiteExcelConcernsToModel;

class UserImport implements ToModel
{
    public function model(array $row)
    {
        return new User([
            'name' => $row[0],
            'email' => $row[1],
            'phone' => $row[2],
        ]);
    }
}

Dalam kod di atas, kami telah melaksanakan kelas UserImport menggunakan antara muka ToModel. Antara muka ToModel menyediakan kaedah model() yang diperlukan, yang menukar setiap baris data Excel kepada objek model. Dalam kod di atas, kami telah menghuraikan tiga lajur pertama daripada fail Excel dan menggunakannya untuk mencipta rekod pengguna baharu.

Gunakan kaedah import() dalam pengawal untuk mengimport fail Excel, seperti yang ditunjukkan di bawah:

public function import(Request $request)
{
    $file = $request->file('file');
    Excel::import(new UserImport, $file);
    return redirect()->back()->with('success', 'Excel file imported successfully.');
}

Dalam kod di atas, kami mendapat objek fail Excel yang dimuat naik dan menghantarnya melalui Laravel Excel import( ) untuk mengimportnya ke dalam kelas UserImport. Jika import berjaya, sistem akan menghantar respons ubah hala kepada pengguna dengan mesej kejayaan "Fail Excel berjaya diimport".

Bagaimana untuk menggunakan perpustakaan PHPOffice untuk membaca dan menulis fail Excel?

PHPOffice ialah perpustakaan PHP yang digunakan untuk membaca dan menulis pelbagai jenis fail pejabat, seperti Excel, Word dan PowerPoint, dsb. PHPOffice, tidak seperti Laravel Excel, tidak dibangunkan untuk rangka kerja tertentu dan boleh digunakan dalam mana-mana aplikasi PHP.

Sebelum memasang PHPOffice, anda perlu memastikan anda telah memasang sambungan Zip PHP dan sambungan XML PHP.

Gunakan Composer untuk memasang pustaka Hamparan PHPOffice, anda boleh menggunakan arahan berikut:

composer require phpoffice/phpspreadsheet

Untuk mencipta fail Excel baharu, kita boleh menggunakan kod berikut:

<?php

use PhpOfficePhpSpreadsheetSpreadsheet;
use PhpOfficePhpSpreadsheetWriterXlsx;

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello World!');
$sheet->setCellValue('B1', 'This is PHPOffice.');

$writer = new Xlsx($spreadsheet);
$writer->save('hello.xlsx');

dalam di atas Dalam kod, kami mula-mula membuat hamparan baharu dan menambah "Hello World!" dan "Ini adalah sel PHPOffice pada dua lajur pertama baris pertamanya." Kami kemudian menyimpan hamparan ke fail hello.xlsx.

Untuk membuka dan mengedit fail Excel sedia ada, kami boleh menggunakan kod berikut:

<?php

use PhpOfficePhpSpreadsheetIOFactory;

$spreadsheet = IOFactory::load('hello.xlsx');
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('C1', 'This cell has been added.');

$writer = new Xlsx($spreadsheet);
$writer->save('hello.xlsx');

Dalam kod di atas, kami menggunakan kelas IOFactory untuk memuatkan fail Excel sedia ada daripada cakera. Kami kemudian membuka lembaran kerja aktif fail dan menambah sel baharu padanya. Akhir sekali, kami menyimpan kemas kini pada fail asal.

Kesimpulan

Dalam artikel ini, kami memperkenalkan cara membaca dan menulis fail Excel dalam aplikasi Laravel menggunakan pustaka Laravel Excel dan PHPOffice. Kami mempelajari cara mengeksport dan mengimport fail Excel menggunakan Laravel Excel, dan cara mencipta, membuka dan mengedit fail Excel sedia ada menggunakan perpustakaan PHPOffice. Teknik ini seharusnya memudahkan anda untuk menyepadukan fail Excel ke dalam aplikasi Laravel anda.

Atas ialah kandungan terperinci Pembangunan Laravel: Bagaimana untuk membaca dan menulis fail Excel menggunakan Laravel Excel dan PHPOffice?. 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