首頁 > php框架 > Laravel > Laravel開發:如何使用Laravel Excel和PHPOffice讀取和寫入Excel檔案?

Laravel開發:如何使用Laravel Excel和PHPOffice讀取和寫入Excel檔案?

PHPz
發布: 2023-06-13 17:57:58
原創
2800 人瀏覽過

隨著Excel檔案在商業和財務領域中的廣泛使用,將Excel檔案整合到網路應用程式中已成為開發人員所需的技能之一。由於Laravel是一種流行的PHP框架,因此其生態系統中有許多套件可以幫助我們讀取和寫入Excel檔案。本文將介紹如何使用Laravel Excel和PHPOffice函式庫在Laravel應用程式中讀取和寫入Excel檔案。

什麼是Laravel Excel?

Laravel Excel是為Laravel框架開發的強大Excel處理工具。該工具提供了易於使用的API,可以幫助我們輕鬆匯入和匯出Excel檔案。該工具的一個主要優點是它允許直接操作Excel檔案而無需依賴Excel軟體。

安裝Laravel Excel可以透過Composer完成。在終端機中進入Laravel專案的目錄,並執行下方的Composer指令:

composer require maatwebsite/excel
登入後複製

該指令將從Packagist下載最新版本的Laravel Excel並自動完成安裝程序。

如何使用Laravel Excel匯出Excel檔案?

Laravel Excel提供了一個Excel類,它是一個代理類,透過它可以建立新的Excel檔案或開啟並編輯現有的Excel檔案。我們可以使用該類別在Laravel應用程式中匯出Excel檔案。

在專案中建立一個新的Excel文件,我們可以使用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();
    }
}
登入後複製

在上面的程式碼中,我們定義了一個名為ExampleExport的類別。該類別使用FromCollection和WithHeadings接口,這些接口提供了產生Excel檔案所需的方法。

在headings()方法中,我們定義了Excel檔案的標題,這些標題列在Excel工作表的第一行中。在collect()方法中,我們從資料庫中擷取使用者記錄並將其返還給呼叫該類別的控制器。

要匯出Excel文件,我們可以在控制器方法中實例化ExampleExport,如下所示:

public function export()
{
    return Excel::download(new ExampleExport, 'users.xlsx');
}
登入後複製

在上面的程式碼中,我們使用Laravel Excel提供的download()方法從ExampleExport匯出一個Excel檔。此方法需要兩個參數:第一個參數是ExampleExport實例,第二個參數是Excel檔案名稱。

在瀏覽器中存取匯出方法的URL時,系統將會提示您下載users.xlsx檔。

如何使用Laravel Excel匯入Excel檔案?

讀取Excel檔案並將其資料匯入資料庫時,我們可以使用Laravel Excel提供的import()方法。此方法接受三個參數:檔案物件、任務回呼和工作表名稱。

為了示範如何匯入Excel文件,我們將建立一個名為UserImport的類,如下所示:

<?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],
        ]);
    }
}
登入後複製

在上面的程式碼中,我們使用ToModel介面實作了UserImport類別。 ToModel介面提供了一個必需的model()方法,該方法將每一行Excel資料轉換為模型物件。在上面的程式碼中,我們解析了Excel檔案中的前三個欄位並將其用於建立新的使用者記錄。

在控制器中使用import()方法匯入Excel文件,如下所示:

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

在上面的程式碼中,我們取得上傳的Excel檔案物件並透過Laravel Excel的import( )方法將其匯入到UserImport類別中。如果匯入成功,系統將向使用者發送帶有「Excel檔案成功匯入」的成功訊息的重定向回應。

如何使用PHPOffice函式庫讀寫Excel檔?

PHPOffice是一個PHP函式庫,用於讀寫不同類型的辦公室文件,如Excel、Word和PowerPoint等。 PHPOffice與Laravel Excel不同,它不是為特定的框架開發的,可以用於任何PHP應用程式。

在安裝PHPOffice之前,您需要確保已安裝PHP Zip擴充功能和PHP XML擴充。

使用Composer安裝PHPOffice的Spreadsheet庫,可以使用以下命令:

composer require phpoffice/phpspreadsheet
登入後複製

要建立一個新的Excel文件,我們可以使用以下程式碼:

<?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');
登入後複製

在上面的在程式碼中,我們首先建立一個新的電子表格,並在其第一行的前兩個列中新增了「Hello World!」和「This is PHPOffice.」的儲存格。然後,我們將電子表格儲存到hello.xlsx檔案中。

要開啟和編輯現有的Excel文件,我們可以使用以下程式碼:

<?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');
登入後複製

在上面的程式碼中,我們使用IOFactory類別從磁碟載入現有的Excel檔案。然後,我們開啟了該文件的活動工作表,並向其新增了一個新的儲存格。最後,我們將更新儲存到原始文件中。

結論

在本文中,我們介紹如何使用Laravel Excel和PHPOffice程式庫在Laravel應用程式中讀取和寫入Excel檔案。我們學習如何使用Laravel Excel匯出和匯入Excel文件,以及如何使用PHPOffice庫建立、開啟和編輯現有的Excel文件。這些技術應該使您能夠更輕鬆地整合Excel檔案到您的Laravel應用程式中。

以上是Laravel開發:如何使用Laravel Excel和PHPOffice讀取和寫入Excel檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板