Rumah >rangka kerja php >ThinkPHP >Bagaimana untuk menggunakan ThinkPHP6 untuk mengimport dan mengeksport Excel?

Bagaimana untuk menggunakan ThinkPHP6 untuk mengimport dan mengeksport Excel?

王林
王林asal
2023-06-12 09:23:131887semak imbas

Dengan perkembangan Internet, terdapat peningkatan keperluan untuk import dan eksport data, terutamanya dalam perusahaan. Sebagai perisian pejabat yang sangat popular, Excel juga digunakan secara meluas untuk penyimpanan dan pemprosesan data. Oleh itu, cara menggunakan ThinkPHP6 untuk mengimport dan mengeksport Excel telah menjadi isu yang sangat penting. Artikel ini akan memperkenalkan langkah-langkah untuk import dan eksport Excel menggunakan ThinkPHP6.

1. Eksport Excel

ThinkPHP6 menyediakan kelas alat eksport Excel yang sangat mudah - PHPExcel Anda boleh menggunakan PHPExcel untuk mengeksport data ke dalam fail Excel 🎜 >1. Pasang pustaka kelas PHPExcel

Tambah pustaka kelas PHPExcel dalam fail composer.json:

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

Jalankan arahan untuk memasang pustaka kelas PHPExcel:

rreee

2. Cipta Pengawal eksport Excel

Buat kelas pengawal untuk mengendalikan permintaan eksport Excel:

composer install

3 Bina sumber data

Sebelum mengeksport Excel, anda perlu bersedia data yang akan dieksport sumber. Biasanya terdapat dua cara untuk mendapatkan sumber data:

(1) Dapatkan data daripada pangkalan data

namespace appdmincontroller;

use PhpOfficePhpSpreadsheetSpreadsheet;
use PhpOfficePhpSpreadsheetWriterXlsx as Writer;

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

(2) Dapatkan data daripada sumber data lain

Jika kita mahu Sesetengah data dieksport ke fail Excel, tetapi data ini tidak disimpan dalam pangkalan data Contohnya, kami ingin mengeksport beberapa maklumat pesanan dalam bentuk Excel, dsb. Pada masa ini, kita boleh mendapatkan data ini melalui kaedah lain, seperti mendapatkannya daripada antara muka API rangkaian.

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. Import Excel

Ia juga sangat mudah untuk menggunakan ThinkPHP6 untuk memproses import Excel Ia juga dilaksanakan menggunakan perpustakaan kelas PHPExcel adalah seperti berikut:

1. Pasang pustaka kelas PHPExcel

Langkahnya adalah sama seperti eksport Excel, anda perlu memasang perpustakaan kelas PHPExcel terlebih dahulu.

2. Cipta Pengawal Import Excel

Buat kelas pengawal untuk mengendalikan permintaan import Excel:

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');
    }
}

3 muat naik borang ke paparan untuk membolehkan pengguna memuat naik fail Excel untuk diimport.

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();
        }
    }
}

4. Memproses data yang diimport

Selepas mengimport Excel, kami boleh mendapatkan data yang diimport melalui API yang disediakan oleh PHPExcel. Dalam kod di atas, kami menggunakan kod berikut untuk mendapatkan data:

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

Data yang diimport disimpan dalam pembolehubah $data Kami boleh melakukan operasi pemprosesan data seterusnya, seperti memasukkan data ke dalam pangkalan data.

Ringkasnya, menggunakan ThinkPHP6 untuk mengimport dan mengeksport Excel adalah agak mudah Dengan menggunakan perpustakaan kelas PHPExcel, kami boleh membaca dan mengeksport fail Excel dengan mudah.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan ThinkPHP6 untuk mengimport dan mengeksport Excel?. 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