一、引见
用纯 php 编写的库,它供应了一组类,许可您读取和写入差别的电子表格文件花样
支撑花样
环境请求
php 5.6 及以上
php_zip 支撑并启用
php_xml 支撑并启用
php_gd2 支撑并启用
装置
> composer require phpoffice/phpspreadsheet
hello world
<?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');
实例
包中带了实例代码,位置 vendor/phpoffice/phpspreadsheet/samples 下
> php -S localhost:8000 -t vendor/phpoffice/phpspreadsheet/samples
二、读取
无需体贴文件范例加载,用到了 IOFactory
// 文件途径 $inputFileName = './sampleData/example1.xls'; $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($inputFileName);
注重:
这不是加载文件的最有用要领, 而且它缺少在将文件现实读入 Spreadsheet 对象之前以任何体式格局设置加载器的灵活性。
晓得文件范例,能够本身决议运用哪一种读取器
// 文件途径 $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);
当只需读取数据,不要花样时,实例读取器中 readDataOnly 属性,以下
$inputFileType = 'Xls'; $inputFileName = './sampleData/example1.xls'; $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType); /** 只需数据 **/ $reader->setReadDataOnly(true); $spreadsheet = $reader->load($inputFileName);
注重:csv 读取器没有这个属性
多个文件合并为一个对象
$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)); }
注重:对多个事情表运用雷同的事情表索引不会将文件附加到统一事情表中,而是掩盖先前加载的效果。您没法将多个 CSV 文件加载到统一事情表中。
转为数组
文件最后会载入到一个对象中,我称为 spreadsheet 事情表对象,这个对象中存放着所以事情表鸠合的信息(数据信息和花样信息、事情表信息等)
$spreadsheet = PhpOffice\PhpSpreadsheet\IOFactory::load("new.xls"); $data = $spreadsheet ->getSheet(0) // 指定第一个事情表为当前 ->toArray(); // 转为数组 // 或许获得悉数事情表的数据数组 $cells=array(); // 事情表对象有迭代器完成 foreach ( $spreadsheet->getWorksheetIterator() as $data ) { $cells = $data->toArray(); }
结语
PhpSpreadsheet 是异常不错的 php 的电子表格处置惩罚东西类,后续有时间在补上写入和导出。
更多PHP相干学问,请接见ki4网!
以上就是关于 PhpSpreadsheet 简朴教程的细致内容,更多请关注ki4网别的相干文章!