Heim > PHP-Framework > Denken Sie an PHP > Wie verwende ich ThinkPHP6 zum Importieren und Exportieren von Excel?

Wie verwende ich ThinkPHP6 zum Importieren und Exportieren von Excel?

王林
Freigeben: 2023-06-12 09:23:13
Original
1900 Leute haben es durchsucht

Mit der Entwicklung des Internets besteht insbesondere in Unternehmen ein immer größerer Bedarf an Datenimport und -export. Als sehr beliebte Bürosoftware wird Excel auch häufig zur Datenspeicherung und -verarbeitung eingesetzt. Daher ist die Verwendung von ThinkPHP6 zum Importieren und Exportieren von Excel zu einem sehr wichtigen Thema geworden. In diesem Artikel werden die Schritte für den Excel-Import und -Export mit ThinkPHP6 vorgestellt.

1. Excel-Export

ThinkPHP6 bietet eine sehr praktische Excel-Export-Tool-Klasse – PHPExcel. Die spezifischen Schritte sind wie folgt:

1. Installieren Sie die PHPExcel-Klassenbibliothek Composer. Fügen Sie die PHPExcel-Klassenbibliothek zur JSON-Datei hinzu:

"require": {
    "phpoffice/phpexcel": "^1.8"
},
Nach dem Login kopieren

Führen Sie den Befehl aus, um die PHPExcel-Klassenbibliothek zu installieren:

composer install
Nach dem Login kopieren

2. Erstellen Sie einen Excel-Export-Controller

Erstellen Sie eine Controller-Klasse zur Verarbeitung von Excel-Exportanforderungen:

namespace appdmincontroller;

use PhpOfficePhpSpreadsheetSpreadsheet;
use PhpOfficePhpSpreadsheetWriterXlsx as Writer;

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

3. Erstellen Sie die Datenquelle

Bevor Sie Excel exportieren, müssen Sie die zu exportierende Datenquelle vorbereiten. Normalerweise gibt es zwei Möglichkeiten, Datenquellen abzurufen:

(1) Daten aus der Datenbank abrufen

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');
    }
}
Nach dem Login kopieren

(2) Daten aus anderen Datenquellen abrufen

Wenn wir einige Daten in Excel-Dateien exportieren möchten, diese Daten jedoch nicht gespeichert werden In der Datenbank möchten wir beispielsweise einige Bestellinformationen in Form von Excel usw. exportieren. Derzeit können wir diese Daten auf andere Weise abrufen, beispielsweise über die Netzwerk-API-Schnittstelle.

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');
    }
}
Nach dem Login kopieren

2. Excel-Import

Es ist auch sehr praktisch, ThinkPHP6 für den Excel-Import zu verwenden. Die spezifischen Schritte sind wie folgt:

1. Installieren Sie die PHPExcel-Klassenbibliothek Genau wie bei den Schritten für den Excel-Export müssen Sie die PHPExcel First Class-Bibliothek installieren.

2. Erstellen Sie einen Excel-Import-Controller

Erstellen Sie eine Controller-Klasse, um Excel-Importanfragen zu verarbeiten:

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();
        }
    }
}
Nach dem Login kopieren

3. Wir müssen der Ansicht ein Upload-Formular hinzufügen, damit Benutzer Excel zum Importieren hochladen können dokumentieren.

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

4. Verarbeitung importierter Daten

Nach dem Excel-Import können wir die importierten Daten über die von PHPExcel bereitgestellte API abrufen. Im obigen Code verwenden wir den folgenden Code, um Daten abzurufen:

$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;
}
Nach dem Login kopieren

Die importierten Daten werden in der Variablen $data gespeichert. Wir können nachfolgende Datenverarbeitungsvorgänge durchführen, z. B. das Einfügen von Daten in die Datenbank.

Zusammenfassend ist die Verwendung von ThinkPHP6 zum Importieren und Exportieren von Excel relativ einfach. Mithilfe der PHPExcel-Klassenbibliothek können wir Excel-Dateien problemlos lesen und exportieren.

Das obige ist der detaillierte Inhalt vonWie verwende ich ThinkPHP6 zum Importieren und Exportieren von Excel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage