Maison > développement back-end > tutoriel php > Tutoriel simple sur PhpSpreadsheet

Tutoriel simple sur PhpSpreadsheet

藏色散人
Libérer: 2023-04-07 15:02:01
avant
15857 Les gens l'ont consulté

J'ai rencontré aujourd'hui un problème concernant la conversion de données entre php et Excel. J'utilise PHPExcel auparavant, mais leur équipe de développement ne le met plus à jour. Mais j'ai trouvé PhpSpreadsheet .

1. Introduction

Une bibliothèque écrite en PHP pur, qui fournit un ensemble de classes qui vous permettent de lire et d'écrire différents formats de fichiers de feuilles de calcul

Formats pris en charge

Tutoriel simple sur PhpSpreadsheet

Exigences en matière d'environnement

php 5.6 et supérieur

php_zip prend en charge et active

php_xml prend en charge et active

php_gd2 prend en charge et active

installer

> composer require phpoffice/phpspreadsheet
Copier après la connexion

bonjour tout le monde

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

Exemple

Le package contient un exemple de code, situé sous supplier/phpoffice/phpspreadsheet/samples

> php -S localhost:8000 -t vendor/phpoffice/phpspreadsheet/samples
Copier après la connexion

2. Lisez

sans vous soucier du chargement du type de fichier.IOFactory

// 文件路径
$inputFileName = &#39;./sampleData/example1.xls&#39;;
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($inputFileName);
Copier après la connexion

Remarque :

Ce n'est pas pour charger des fichiers. , et il lui manque la flexibilité nécessaire pour configurer le chargeur de quelque manière que ce soit avant de lire réellement le fichier dans l'objet Spreadsheet.

Connaissant le type de fichier, vous pouvez décider quel lecteur utiliser

// 文件路径
$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);
Copier après la connexion

Lorsque vous souhaitez uniquement lire des données sans formatage, l'attribut readDataOnly dans le lecteur d'instance est le suivant

$inputFileType = &#39;Xls&#39;;
$inputFileName = &#39;./sampleData/example1.xls&#39;;
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
/**  只要数据  **/
$reader->setReadDataOnly(true);
$spreadsheet = $reader->load($inputFileName);
Copier après la connexion

Remarque : le lecteur csv n'a pas cette propriété

Plusieurs fichiers sont fusionnés en un seul objet

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

Remarque : pour plusieurs feuilles de calcul à l'aide du le même index de feuille de calcul n'ajoute pas les fichiers à la même feuille de calcul mais écrase les résultats précédemment chargés. Vous ne pouvez pas charger plusieurs fichiers CSV dans la même feuille de calcul.

Convertir en tableau

Le fichier sera finalement chargé dans un objet, que j'appelle l'objet feuille de calcul. Cet objet stocke des informations sur toutes les collections de feuilles de calcul (Données. informations et informations de format, informations sur la feuille de calcul, etc.)

$spreadsheet = PhpOffice\PhpSpreadsheet\IOFactory::load("new.xls");
$data = $spreadsheet
            ->getSheet(0) // 指定第一个工作表为当前
            ->toArray();  // 转为数组
// 或者得到全部工作表的数据数组           
$cells=array();
// 工作表对象有迭代器实现
foreach ( $spreadsheet->getWorksheetIterator() as $data ) {
    $cells = $data->toArray();
}
Copier après la connexion

Conclusion

PhpSpreadsheet est une très bonne classe d'outil de traitement de feuille de calcul php, je l'ajouterai plus tard lorsque j'en aurai. temps. Écrire et exporter.

Pour plus de connaissances sur PHP, veuillez visiter le Site Web PHP chinois !

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