日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

隨著互聯網的發展,數據導入和導出的需求越來越多,尤其是在企業中。Excel作為一種非常流行的辦公軟件,也被廣泛應用于數據的存儲和處理。因此,怎樣使用ThinkPHP6進行Excel的導入和導出已經成為了一個很重要的問題。本文將介紹使用ThinkPHP6進行Excel導入和導出的步驟。

一、Excel導出

ThinkPHP6提供了一個非常方便的Excel導出工具類——PHPExcel,使用PHPExcel可以將數據導出為Excel文件,具體步驟如下:

1.安裝PHPExcel類庫

在composer.json文件中添加PHPExcel類庫:

"require": {
    "phpoffice/phpexcel": "^1.8"
},

登錄后復制

執行命令安裝PHPExcel類庫:

composer install

登錄后復制

2.創建Excel導出Controller

創建一個控制器類來處理Excel導出的請求:

namespace appdmincontroller;

use PhpOfficePhpSpreadsheetSpreadsheet;
use PhpOfficePhpSpreadsheetWriterXlsx as Writer;

class Excel extends Base
{
    public function export()
    {
        // TODO: 導出Excel
    }
}

登錄后復制

3.構造數據源

在導出Excel之前,需要先準備好要導出的數據源。通常有兩種方式來獲取數據源:

(1) 從數據庫中獲取數據

namespace appdmincontroller;

use appdminmodelUser as UserModel;
use PhpOfficePhpSpreadsheetSpreadsheet;
use PhpOfficePhpSpreadsheetWriterXlsx as Writer;

class Excel extends Base
{
    public function export()
    {
        $users = UserModel::select()->toArray();

        $spreadsheet = new Spreadsheet();

        $sheet = $spreadsheet->getActiveSheet();
        $sheet->setCellValue('A1', 'ID');
        $sheet->setCellValue('B1', '姓名');
        $sheet->setCellValue('C1', '性別');
        $sheet->setCellValue('D1', '年齡');

        $row = 2;
        foreach ($users as $user) {
            $sheet->setCellValue('A' . $row, $user['id']);
            $sheet->setCellValue('B' . $row, $user['name']);
            $sheet->setCellValue('C' . $row, $user['gender']);
            $sheet->setCellValue('D' . $row, $user['age']);
            $row++;
        }

        $writer = new Writer($spreadsheet);
        $writer->save('users.xlsx');
    }
}

登錄后復制

(2) 從其他數據源獲取數據

如果我們要將一些數據導出為Excel文件,但這些數據并不存儲在數據庫中,比如我們要以Excel的形式導出一些訂單信息等。這時,我們可以通過其他方式來獲取這些數據,例如從網絡API接口中獲取。

namespace appdmincontroller;

use GuzzleHttpClient;
use PhpOfficePhpSpreadsheetSpreadsheet;
use PhpOfficePhpSpreadsheetWriterXlsx as Writer;

class Excel extends Base
{
    public function export()
    {
        $client = new Client();

        $response = $client->get('https://api.example.com/orders');

        $orders = json_decode($response->getBody()->getContents(), true);

        $spreadsheet = new Spreadsheet();

        $sheet = $spreadsheet->getActiveSheet();
        $sheet->setCellValue('A1', '訂單編號');
        $sheet->setCellValue('B1', '下單人');
        $sheet->setCellValue('C1', '訂單金額');

        $row = 2;
        foreach ($orders as $order) {
            $sheet->setCellValue('A' . $row, $order['id']);
            $sheet->setCellValue('B' . $row, $order['user']);
            $sheet->setCellValue('C' . $row, $order['amount']);
            $row++;
        }

        $writer = new Writer($spreadsheet);
        $writer->save('orders.xlsx');
    }
}

登錄后復制

二、Excel導入

使用ThinkPHP6處理Excel導入也非常方便,同樣使用PHPExcel類庫實現,具體步驟如下:

1.安裝PHPExcel類庫

同Excel導出的步驟一樣,需要先安裝PHPExcel類庫。

2.創建Excel導入Controller

創建一個控制器類來處理Excel導入的請求:

namespace appdmincontroller;

use PhpOfficePhpSpreadsheetIOFactory;

class Excel extends Base
{
    public function import()
    {
        $file = request()->file('file');

        $info = $file->validate(['ext' => 'xlsx'])->move('uploads');

        if ($info) {
            $filename = 'uploads/' . $info->getSaveName();

            $reader = IOFactory::createReader('Xlsx');
            $spreadsheet = $reader->load($filename);

            $sheet = $spreadsheet->getActiveSheet();
            $highestRow = $sheet->getHighestRow();
            $highestColumn = $sheet->getHighestColumn();

            $data = [];

            for ($row = 2; $row <= $highestRow; $row++) {
                $rowData = [];
                for ($column = 'A'; $column <= $highestColumn; $column++) {
                    $cellValue = $sheet->getCell($column . $row)->getValue();
                    $rowData[] = $cellValue;
                }
                $data[] = $rowData;
            }

            unlink($filename);

            dump($data);
        } else {
            echo $file->getError();
        }
    }
}

登錄后復制

3.上傳Excel文件

我們需要在視圖中添加一個上傳表單,來讓用戶上傳要導入的Excel文件。

<form method="post" action="admin/excel/import"
??????enctype="multipart/form-data">
??????<input type="file" name="file">
??????<input type="submit" value="上傳">
</form>

登錄后復制

4.處理導入數據

在導入Excel之后,我們可以通過PHPExcel提供的API獲取到導入的數據。在上面的代碼中,我們使用了以下代碼來獲取數據:

$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();

$data = [];

for ($row = 2; $row <= $highestRow; $row++) {
    $rowData = [];
    for ($column = 'A'; $column <= $highestColumn; $column++) {
        $cellValue = $sheet->getCell($column . $row)->getValue();
        $rowData[] = $cellValue;
    }
    $data[] = $rowData;
}

登錄后復制

導入的數據即存儲在$data變量中,我們可以進行后續的數據處理操作,比如將數據插入到數據庫中。

綜上所述,使用ThinkPHP6進行Excel導入和導出相對來說比較簡單,通過使用PHPExcel類庫,我們可以很方便地實現Excel文件的讀取和導出。

以上就是怎樣使用ThinkPHP6進行Excel導入和導出?的詳細內容,更多請關注www.xfxf.net其它相關文章!

分享到:
標簽:Excel導入 thinkphp 導出
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定