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
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 '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');
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 = './sampleData/example1.xls'; $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 = './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);
Lorsque vous souhaitez uniquement lire des données sans formatage, l'attribut readDataOnly dans le lecteur d'instance est le suivant
$inputFileType = 'Xls'; $inputFileName = './sampleData/example1.xls'; $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 = '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)); }
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!