如何解决尝试访问 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();
}
}) ;
}
});
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 举报,一经查实,本站将立刻删除。