php调用office失败,thinkphp5使用PhpOffice导入excel

该博客介绍了一种使用PHP的PHPExcel类库来读取和导入XLS文件的方法。首先,通过Composer安装扩展,然后实例化Xls类,并尝试加载上传的文件。在处理过程中,检查文件列数是否合规,接着遍历每一行,提取所需数据,并进行保存操作。如果在读取或处理过程中出现错误,会记录日志并返回错误信息。
摘要由CSDN通过智能技术生成

安装扩展

composer require phpoffice/phpspreadsheet

类文件引入扩展

use PhpOffice\PhpSpreadsheet\Reader\Xls;

use PhpOffice\PhpSpreadsheet\Shared\Date;

导入方法

public function import(){

//实例化xls类

$reader = new Xls();

try{

$file = request()->file('fname');

if(!$file){

$this->error = '请上传文件';

return false;

}

//加载上传的xls文件

$spreadsheet = $reader->load($file->getPathname());

//获取当前使用的sheet

$sheet = $spreadsheet->getActiveSheet();

}catch (\PhpOffice\PhpSpreadsheet\Reader\Exception $e){

Log::info('错误信息'.$e->getMessage());

$this->error = $e->getMessage();

return false;

}

//文件列数判定

$countColumn = $sheet->getHighestColumn(); //总列数

if ($countColumn != 'Z') {

$this->error = '文件内容不合规';

return false;

}

//文件行数判定

$countRow = $sheet->getHighestRow(); //总行数

$countRow = $countRow - 1;

if ($countRow <= 0) {

$this->error = '文件数据为空';

return false;

}

//循环处理

foreach ($sheet->getRowIterator(2) as $k=>$row){

$rowIndex = $row->getRowIndex(); //当前行

//获取所有参数

$aaa = $sheet->getCellByColumnAndRow(1,$rowIndex)->getValue()??'';

$bbb = $sheet->getCellByColumnAndRow(2,$rowIndex)->getValue()??'';

$ccc = $sheet->getCellByColumnAndRow(3,$rowIndex)->getValue()??'';

//...

//...

//...

$this->save(['aaa'=>$aaa,'bbb'=>$bbb,'ccc'=>$ccc]);

}

}

这是根据自己的已有项目整理出的文档,总体方案没有问题,如果有细节问题,欢迎指正.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值