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

Comment utiliser ThinkPHP6 pour importer et exporter Excel ?

王林
Libérer: 2023-06-12 09:23:13
original
1925 Les gens l'ont consulté

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"
},
Copier après la connexion

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

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
    }
}
Copier après la connexion

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');
    }
}
Copier après la connexion

(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');
    }
}
Copier après la connexion

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();
        }
    }
}
Copier après la connexion

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>
Copier après la connexion

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;
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal