场景:在使用laravel框架的时候,需要读取excel,使用 composer install XXXX 安装excel失败,根据报错提示,php不兼容。 因为PHPHExcel使用的php版本
和项目运所需要的php 版本不兼容,php8的版本
解决方法:下载手工安装,步骤如下
1:网站找到PHPExcel下载链接下载PHPExcel
2: 在app下新建一个libs目录,把下载的PHPExcel放在里面
3:配置 composer.json文件,找到 class_map字段,把创建的Excel加进去
4:更新composerclassmap,使用命令
composer dumpautoload [为了更新autoload_classmap.php文件内容]
5:使用。引入->调用
use PHPExcel_IOFactory;
use PHPExcel;
省略....
$filepath = public_path("upload/1.xlsx"); //.DIRECTORY_SEPARATOR."upload/1.xlsx";
print_r($filepath);
//$objPHPExcel = PHPExcel_IOFactory::load($filepath);
$reader = PHPExcel_IOFactory::createReader('Excel2007');
$PHPExcel = $reader->load($filepath);
/**读取excel文件中的第一个工作表*/
$currentSheet = $PHPExcel->getSheet(0);
/**取得最大的列号*/
$allColumn = $currentSheet->getHighestColumn();
/**取得一共有多少行*/
$allRow = $currentSheet->getHighestRow();
//循环读取每个单元格的内容。注意行从1开始,列从A开始
$list = [];
for ($rowIndex = 1; $rowIndex <= $allRow; $rowIndex++) {
for ($colIndex = 'A'; $colIndex <= $allColumn; $colIndex++) {
$addr = $colIndex . $rowIndex;
$cell = $currentSheet->getCell($addr)->getValue();
if ($cell instanceof PHPExcel_RichText) {
//富文本转换字符串
$cell = $cell->__toString();
}
$list[] = $cell;
}
}
print_r($list);
die("SSSSSSS");
6:运行,这个时候应该会报错
由于运行的php8不兼容, 根据报错提示,修改对应的phpexcel安装包,基本都是 通过{}获取数组元素,修改成 []方式获取
7:修改完以后正常运行