尝试访问 PhpSpreadsheet 中 null 类型值的数组偏移量

问题描述

我正在使用ajax上传excel表并将数据插入到数据库中。我测试过了,可以正常工作。

但我在网络选项卡中遇到一个错误

注意:尝试访问数组中 null 类型值的偏移量 /opt/lampp/htdocs/test/assets/vendor/PHPoffice/PHPspreadsheet/src/PHPSpreadsheet/Reader/Xlsx.PHP 在线 1934

我在 Excel 工作表中只有 1 条记录,当我导入工作表时,我得到了三行(第一行是正确的,其余两行是 NULL)。

我正在使用以下代码

HTML

<form method="post" id="import_excelsheet" name="import_excelsheet" enctype="multipart/form-data">
 <div class="form-group"><input type="file" name="list21" /></div>
 <input type="hidden" name="action" value="list21Import">
 <input type="submit" name="listImport21" id="list_import" class="btn btn-primary" value="Import list" />
</form>

JS

$('#import_excelsheet').validate({
    rules: {
        list21: {
            required: true,extension: "xlsx|xls|xlsm|csv"
        }
    },messages: {
        list21: {
            required: "file .xlsx,.xlsm,.xls,.csv only.",extension: "Please upload valid file formats .xlsx,.csv only."
        }
    },submitHandler: function(form) {  
      $.ajax({
      url:"process.PHP",method:"POST",data:new FormData($('#import_excelsheet')[0]),contentType:false,cache:false,processData:false,success:function(data)
      {
        alert("success");
        //location.reload();
      }
    }) ;    
         }
});

Process.PHP(这只是一个函数

function list21Import($pdo){
if($_FILES["list21"]["name"] != '')
{
         $allowed_extension = array('xls','csv','xlsx');
         $file_array = explode(".",$_FILES["list21"]["name"]);
         $file_extension = end($file_array);

         if(in_array($file_extension,$allowed_extension))
         {
          $file_name = time() . '.' . $file_extension;
          move_uploaded_file($_FILES['list21']['tmp_name'],$file_name);
          $file_type = \PHPOffice\PHPSpreadsheet\IOFactory::identify($file_name);
          $reader = \PHPOffice\PHPSpreadsheet\IOFactory::createReader($file_type);

          $spreadsheet = $reader->load($file_name);

          unlink($file_name);

          $data = $spreadsheet->getActiveSheet()->toArray();
          //print_r($data);
         
          $isheader = 0;
          foreach($data as $row)
          {

            $social['fb'] = trim($row[5]);
            $social['twitter'] = trim($row[6]);
            $social['linkedin'] = trim($row[7]);
            $social['youtube'] = trim($row[8]);
            $social['instagram'] = trim($row[9]);
            $social_links = serialize($social);

          if($isheader > 0) {
           $insert_data = array(
            ':name'  => $row[0],':email'  => $row[1],':content'  => $row[2],':website'  => $row[3],':logo'  => $row[4],':social_links'  =>$social_links,);

           $query = "INSERT INTO `list21`(`name`,`email`,`content`,`website`,`logo`,`social_links`) VALUES (:name,:email,:content,:website,:logo,:social_links)";
           $statement = $pdo->prepare($query);
           $statement->execute($insert_data);

           } 
           else { 
            $isheader = 1; 
           }

          } // foreach
          $message = '<div class="alert alert-success">Data Imported Successfully</div>';

         } //in_array

         else
         {
          $message = '<div class="alert alert-danger">Only .xls .csv or .xlsx file allowed</div>';
         }

}
else
{
 $message = '<div class="alert alert-danger">Please Select File</div>';
}

echo $message;

}

你能帮我解决这个问题吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)