关于 PhpSpreadsheet 简单教程
内容导读
收集整理的这篇技术教程文章主要介绍了关于 PhpSpreadsheet 简单教程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3588字,纯文字阅读大概需要6分钟。
内容图文
今天遇到一个问题,涉及 php 与 excel 之间数据转换。之前一直用 PHPExcel,他们的开发组不更新了。但是找到了 PhpSpreadsheet 。一、介绍
用纯 php 编写的库,它提供了一组类,允许您读取和写入不同的电子表格文件格式
支持格式
环境要求
php 5.6 及以上
php_zip 支持并启用
php_xml 支持并启用
php_gd2 支持并启用
安装
> composer require phpoffice/phpspreadsheet
hello world
<?phprequire 'vendor/autoload.php';use PhpOfficePhpSpreadsheetSpreadsheet;use PhpOfficePhpSpreadsheetWriterXlsx;$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 = PhpOfficePhpSpreadsheetIOFactory::load($inputFileName);
注意:
这不是加载文件的最有效方法, 并且它缺乏在将文件实际读入 Spreadsheet 对象之前以任何方式配置加载器的灵活性。
知道文件类型,可以自己决定使用哪种读取器
// 文件路径$inputFileName = './sampleData/example1.xls';/** 创建读取器 **/$reader = new PhpOfficePhpSpreadsheetReaderXls();// $reader = new PhpOfficePhpSpreadsheetReaderXlsx();// $reader = new PhpOfficePhpSpreadsheetReaderXml();// $reader = new PhpOfficePhpSpreadsheetReaderOds();// $reader = new PhpOfficePhpSpreadsheetReaderSlk();// $reader = new PhpOfficePhpSpreadsheetReaderGnumeric();// $reader = new PhpOfficePhpSpreadsheetReaderCsv();$spreadsheet = $reader->load($inputFileName);
当只要读取数据,不要格式时,实例读取器中 readDataOnly 属性,如下
$inputFileType = 'Xls';$inputFileName = './sampleData/example1.xls';$reader = PhpOfficePhpSpreadsheetIOFactory::createReader($inputFileType);/** 只要数据 **/$reader->setReadDataOnly(true);$spreadsheet = $reader->load($inputFileName);
注意:csv 读取器没有这个属性
多个文件合并为一个对象
$inputFileType = 'Csv';$inputFileNames = [ './sampleData/example1.csv', './sampleData/example2.csv' './sampleData/example3.csv'];$reader = PhpOfficePhpSpreadsheetIOFactory::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 = PhpOfficePhpSpreadsheetIOFactory::load("new.xls");$data = $spreadsheet ->getSheet(0) // 指定第一个工作表为当前 ->toArray(); // 转为数组// 或者得到全部工作表的数据数组 $cells=array();// 工作表对象有迭代器实现foreach ( $spreadsheet->getWorksheetIterator() as $data ) { $cells = $data->toArray();}
结语
PhpSpreadsheet 是非常不错的 php 的电子表格处理工具类,后续有时间在补上写入和导出。
更多PHP相关知识,请访问PHP中文网!
以上就是关于 PhpSpreadsheet 简单教程的详细内容。
内容总结
以上是为您收集整理的关于 PhpSpreadsheet 简单教程全部内容,希望文章能够帮你解决关于 PhpSpreadsheet 简单教程所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。