Ich bin heute auf ein Problem bei der Datenkonvertierung zwischen PHP und Excel gestoßen. Ich habe PHPExcel schon einmal verwendet, aber das Entwicklungsteam aktualisiert es nicht mehr. Aber PhpSpreadsheet gefunden.
1. Einführung
Eine in reinem PHP geschriebene Bibliothek, die eine Reihe von Klassen bereitstellt, mit denen Sie verschiedene Tabellenkalkulationsdateiformate lesen und schreiben können
Unterstützte Formate
Umgebungsanforderungen
php 5.6 und höher
php_zip unterstützt und ermöglicht
php_xml unterstützt und ermöglicht
php_gd2 unterstützt und ermöglicht
installieren
> composer require phpoffice/phpspreadsheet
Hallo Welt
<?php require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); $sheet->setCellValue('A1', 'Hello World !'); $writer = new Xlsx($spreadsheet); $writer->save('hello world.xlsx');
Beispiel
Das Paket enthält Beispielcode, der sich unter Vendor/phpoffice/phpspreadsheet/samples befindet
> php -S localhost:8000 -t vendor/phpoffice/phpspreadsheet/samples
2. Lesen Sie
, ohne sich Gedanken über das Laden von Dateitypen machen zu müssen.
// 文件路径 $inputFileName = './sampleData/example1.xls'; $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($inputFileName);
Hinweis:
Dies ist nicht die effizienteste Methode , und es fehlt die Flexibilität, den Loader auf irgendeine Weise zu konfigurieren, bevor die Datei tatsächlich in das Spreadsheet-Objekt eingelesen wird.
Wenn Sie den Dateityp kennen, können Sie entscheiden, welchen Reader Sie verwenden möchten
// 文件路径 $inputFileName = './sampleData/example1.xls'; /** 创建读取器 **/ $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls(); // $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx(); // $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xml(); // $reader = new \PhpOffice\PhpSpreadsheet\Reader\Ods(); // $reader = new \PhpOffice\PhpSpreadsheet\Reader\Slk(); // $reader = new \PhpOffice\PhpSpreadsheet\Reader\Gnumeric(); // $reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv(); $spreadsheet = $reader->load($inputFileName);
Wenn Sie nur Daten ohne Formatierung lesen möchten, lautet das readDataOnly-Attribut im Instanzreader wie folgt
$inputFileType = 'Xls'; $inputFileName = './sampleData/example1.xls'; $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType); /** 只要数据 **/ $reader->setReadDataOnly(true); $spreadsheet = $reader->load($inputFileName);
Hinweis: CSV-Reader verfügt nicht über diese Eigenschaft
Mehrere Dateien werden zu einem Objekt zusammengeführt
$inputFileType = 'Csv'; $inputFileNames = [ './sampleData/example1.csv', './sampleData/example2.csv' './sampleData/example3.csv' ]; $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType); /** 拿到第一个 **/ $inputFileName = array_shift($inputFileNames); $spreadsheet = $reader->load($inputFileName); $spreadsheet->getActiveSheet() ->setTitle(pathinfo($inputFileName,PATHINFO_BASENAME)); /** 循环读取 **/ foreach($inputFileNames as $sheet => $inputFileName) { /** 重新设置工作表索引 **/ $reader->setSheetIndex($sheet+1); /** 把文件当做一个新的工作表载入 **/ $reader->loadIntoExisting($inputFileName,$spreadsheet); /** 设置工作表标题 **/ $spreadsheet->getActiveSheet() ->setTitle(pathinfo($inputFileName,PATHINFO_BASENAME)); }
Hinweis: Für mehrere Arbeitsblätter mit Beim gleichen Arbeitsblattindex werden die Dateien nicht an dasselbe Arbeitsblatt angehängt, sondern die zuvor geladenen Ergebnisse überschrieben. Sie können nicht mehrere CSV-Dateien in dasselbe Arbeitsblatt laden.
In Array konvertieren
Die Datei wird schließlich in ein Objekt geladen, das ich als Tabellenkalkulationsobjekt bezeichne Informationen und Formatinformationen, Arbeitsblattinformationen usw.)
$spreadsheet = PhpOffice\PhpSpreadsheet\IOFactory::load("new.xls"); $data = $spreadsheet ->getSheet(0) // 指定第一个工作表为当前 ->toArray(); // 转为数组 // 或者得到全部工作表的数据数组 $cells=array(); // 工作表对象有迭代器实现 foreach ( $spreadsheet->getWorksheetIterator() as $data ) { $cells = $data->toArray(); }
Fazit
PhpSpreadsheet ist eine sehr gute Klasse für PHP-Tabellenverarbeitungstools. Ich werde sie später hinzufügen, wenn ich sie habe Zeit. Schreiben und exportieren.
Weitere PHP-bezogene Kenntnisse finden Sie auf der PHP-Chinese-Website!
Das obige ist der detaillierte Inhalt vonEinfaches Tutorial zu PHPSpreadsheet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!