Maison  >  Article  >  cadre php  >  Comment utiliser ThinkPHP6 pour importer et exporter Excel ?

Comment utiliser ThinkPHP6 pour importer et exporter Excel ?

王林
王林original
2023-06-12 09:23:131821parcourir

Avec le développement d'Internet, les demandes d'importation et d'exportation de données augmentent, notamment dans les entreprises. Logiciel bureautique très populaire, Excel est également largement utilisé pour le stockage et le traitement des données. Par conséquent, comment utiliser ThinkPHP6 pour importer et exporter Excel est devenu une question très importante. Cet article présentera les étapes d'importation et d'exportation Excel à l'aide de ThinkPHP6.

1. Exportation Excel

ThinkPHP6 fournit une classe d'outil d'exportation Excel très pratique-PHPExcel Vous pouvez utiliser PHPExcel pour exporter des données dans des fichiers Excel. # 🎜🎜#

1. Installez la bibliothèque de classes PHPExcel

Ajoutez la bibliothèque de classes PHPExcel dans le fichier composer.json :

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

Exécutez la commande pour installer le Bibliothèque de classes PHPExcel : #🎜 🎜#
composer install

2. Créez un contrôleur d'exportation Excel

Créez une classe de contrôleur pour gérer les requêtes d'exportation Excel :

namespace appdmincontroller;

use PhpOfficePhpSpreadsheetSpreadsheet;
use PhpOfficePhpSpreadsheetWriterXlsx as Writer;

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

3. une source de données#🎜🎜 #

Avant d'exporter Excel, vous devez préparer la source de données à exporter. Il existe généralement deux façons d'obtenir des sources de données :

(1) Obtenir des données de la base de données

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) Obtenir des données d'autres sources de données

#🎜 🎜#Si nous souhaitons exporter certaines données vers des fichiers Excel, mais que les données ne sont pas stockées dans la base de données, par exemple, nous souhaitons exporter certaines informations de commande sous forme d'Excel, etc. À l'heure actuelle, nous pouvons obtenir ces données par d'autres méthodes, telles que leur obtention à partir de l'interface API réseau.

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

2. Importation Excel

Il est également très pratique d'utiliser ThinkPHP6 pour traiter l'importation Excel. Il est également implémenté à l'aide de la bibliothèque de classes PHPExcel. :

1 .Installez la bibliothèque de classes PHPExcel

Les étapes sont les mêmes que pour l'export Excel, vous devez d'abord installer la bibliothèque de classes PHPExcel.

2. Créer un contrôleur d'importation Excel

Créer une classe de contrôleur pour gérer les demandes d'importation 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.

Nous devons ajouter un formulaire de téléchargement à la vue pour permettre aux utilisateurs de télécharger des fichiers Excel à importer.

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

4. Traitement des données importées

Après avoir importé Excel, nous pouvons obtenir les données importées via l'API fournie par PHPExcel. Dans le code ci-dessus, nous utilisons le code suivant pour obtenir des données :

$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;
}

Les données importées sont stockées dans la variable $data et nous pouvons effectuer des opérations de traitement de données ultérieures, telles que l'insertion de données dans la base de données. milieu.

En résumé, utiliser ThinkPHP6 pour importer et exporter Excel est relativement simple. En utilisant la bibliothèque de classes PHPExcel, nous pouvons facilement lire et exporter des fichiers Excel.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn