I want to import excel files to read its content but it shows me an error that says "500 Internal Server Error". My PHP version that I'm currently using is PHP Version 7.4.29. Is there a problem with the version I'm using in XAMPP or Spreadsheet?
My PHP sourcecode for PHPSpreadsheet to read excel:
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\IOFactory;
public function readExcelSpreadsheet() {
require '../PHPSpreadsheet/vendor/autoload.php';
$arr = [];
$arr['items'] = [];
$fileName = $_FILES['importExcelSpreadsheet']['name'];
$importPath = "../PHPSpreadsheet/import/";
if (
move_uploaded_file($_FILES['importExcelSpreadsheet']['tmp_name'],
"{$importPath}{$fileName}")
) {
if (isset($fileName)) {
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReaderForFile("{$importPath}{$fileName}");
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load("{$importPath}{$fileName}");
$data = $spreadsheet->getActiveSheet()->toArray();
foreach ($data as $row) {
$items = [
'name' => $row['0'],
'email' => $row['1']
];
array_push($arr['items'], $items);
}
return $arr;
}
}
}
Here's my AJAX request:
$(document).on("change", "#primary-btn-import-for-import-csv", function () {
if ($("#primary-btn-import-for-import-csv")[0].files.length != 0) {
$("#primary-email-lists-for-import-csv").multiselect("rebuild");
let form = new FormData();
form.append("importExcelSpreadsheet", $("#primary-btn-import-for-import-csv")[0].files[0]);
$.ajax({
url: baseUrlAction() + "?btn=readExcelSpreadsheet",
type: "POST",
dataType: "JSON",
data: form,
contentType: false,
processData: false,
cache: false,
error: function (error) {
console.log(error.responseText);
},
success: function (response) {
let options;
for (let i = 0; i < response.length; i++) {
options +=
'<option value="' + response[i].name + ";" + response[i].email + '">' +
response[i].email +
"</option>";
}
$("#primary-email-lists-for-import-csv").html(options);
$("#primary-email-lists-for-import-csv").multiselect("rebuild");
$("#primary-email-lists-for-import-csv").multiselect("refresh");
},
});
}
});