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

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 17:27   2397   0

安装扩展

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]);

}

}

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

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP