Heim  >  Artikel  >  Backend-Entwicklung  >  Einfaches Tutorial zu PHPSpreadsheet

Einfaches Tutorial zu PHPSpreadsheet

藏色散人
藏色散人nach vorne
2019-10-12 13:53:4015789Durchsuche

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

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

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 = &#39;./sampleData/example1.xls&#39;;
$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 = &#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);

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

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

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen