TP6读取excel内容

Author Avatar
yyq 2021-07-02 15:26:52
  • 二维码

TP6读取excel内容

        TP6要使用第三方库,使用composer安装扩展这个是最快捷的方式了,记录下安装phpexcel扩展及使用方式;

        

        NO1:命令窗口指到项目跟目录,执行 composer require phpoffice/phpexcel,之后会自动安装相应的扩展包;


        NO2:安装完成后,在项目中使用,编写后端上传接口

                use PHPExcel;

                use PHPExcel_IOFactory;

                public function supExcelImport(){

                    $char_arr = ['A','B','C','D','E','F','G','H','I','J']; //文档内单元格编号

                    $use_ret = array();

                    $suffixName = explode('.', $_FILES['file']['name'])[1];  //后缀名

                    $filePath = 'upexcel/'.$_FILES["file"]["name"];  //文件存储路径

                    if($suffixName == "xls" || $suffixName == "xlsx"){

                        if (is_uploaded_file($_FILES["file"]["tmp_name"])) {

                            if (!move_uploaded_file($_FILES["file"]["tmp_name"], $filePath)) {

                                    $ret = "移动失败";

                            }else{

                                    $filename = '/www/wwwroot/xxxx/public/'.$filePath;  //excel文件绝对路径

                                    $objPHPExcelReader = \PHPExcel_IOFactory::load($filename);

                                    $sheet = $objPHPExcelReader->getSheet(0);        // 读取第一个工作表(编号从 0 开始)

                                    $highestRow = $sheet->getHighestRow();           // 取得总行数

                                    $max_char = end($char_arr);

                                    // 一次读取一列

                                    for ($row = 2; $row <= $highestRow; $row++) {

                                        $row_arr = array();

                                        for ($column = 0; $char_arr[$column] != $max_char; $column++) {

                                            $val = $sheet->getCellByColumnAndRow($column, $row)->getValue();

                                            $ustr = strval($val);

                                            $row_arr[] = $ustr;

                                        }

                                        $use_ret[] = $row_arr;

                                    }

                                    

                                    unlink($filePath); //清理上传文件

                            }

                        } 

                    }


                    if(is_array($use_ret)){

                        foreach($use_ret as $value){

                           //循环内处理读取到的数据

                        }

                        $ret = '导入完成';

                    }else{

                        $ret = '导入失败';

                    }

                    

                    echo $ret;

                }

            

        NO3:上面接口即可完成文件内容读取,但是我这里执行时遇到个扩展包错误提示的问题,应该是php版本较高导致的,在某个文件内有个for循环,使用了switch语法,在default下执行语句continue,提示不支持,遇到的话记得自行修改下就可以

上一篇 返回列表 下一篇

发表评论

Tips:评论内容请文明用语