Einfaches Tutorial zu PHPSpreadsheet

藏色散人
Freigeben: 2023-04-07 15:02:01
nach vorne
15790 Leute haben es durchsucht

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

Einfaches Tutorial zu PHPSpreadsheet

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

Hallo Welt

<?php
require &#39;vendor/autoload.php&#39;;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue(&#39;A1&#39;, &#39;Hello World !&#39;);
$writer = new Xlsx($spreadsheet);
$writer->save(&#39;hello world.xlsx&#39;);
Nach dem Login kopieren

Beispiel

Das Paket enthält Beispielcode, der sich unter Vendor/phpoffice/phpspreadsheet/samples befindet

> php -S localhost:8000 -t vendor/phpoffice/phpspreadsheet/samples
Nach dem Login kopieren

2. Lesen Sie

, ohne sich Gedanken über das Laden von Dateitypen machen zu müssen.

// 文件路径
$inputFileName = &#39;./sampleData/example1.xls&#39;;
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($inputFileName);
Nach dem Login kopieren

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 = &#39;./sampleData/example1.xls&#39;;
/** 创建读取器  **/
$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);
Nach dem Login kopieren

Wenn Sie nur Daten ohne Formatierung lesen möchten, lautet das readDataOnly-Attribut im Instanzreader wie folgt

$inputFileType = &#39;Xls&#39;;
$inputFileName = &#39;./sampleData/example1.xls&#39;;
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
/**  只要数据  **/
$reader->setReadDataOnly(true);
$spreadsheet = $reader->load($inputFileName);
Nach dem Login kopieren

Hinweis: CSV-Reader verfügt nicht über diese Eigenschaft

Mehrere Dateien werden zu einem Objekt zusammengeführt

$inputFileType = &#39;Csv&#39;;
$inputFileNames = [
    &#39;./sampleData/example1.csv&#39;,
    &#39;./sampleData/example2.csv&#39;
    &#39;./sampleData/example3.csv&#39;
];
$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));
}
Nach dem Login kopieren

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

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!

Verwandte Etiketten:
Quelle:learnku.com
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