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

Tutoriel simple sur PhpSpreadsheet

藏色散人
藏色散人avant
2019-10-12 13:53:4015917parcourir

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

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

Exemple

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

> php -S localhost:8000 -t vendor/phpoffice/phpspreadsheet/samples

2. Lisez

sans vous soucier du chargement du type de fichier.IOFactory

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

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

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

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

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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer