PHP: Excel не может открыть файл, потому что формат файла или расширение файла недопустимо - PullRequest
0 голосов
/ 31 марта 2020

Когда я пытаюсь открыть файл xls, который я загружаю из своего приложения, у меня появляется эта ошибка:

excel не может открыть файл, поскольку формат файла или расширение файла недопустимы. Убедитесь, что файл не был поврежден и что расширение файла соответствует формату файла.

это мой код php: сначала я загружаю файл xls:

if (is_uploaded_file($_FILES["file_name"]["tmp_name"])) {
   if (rename($_FILES["file_name"]["tmp_name"], $directoryDestination.$nameDestination))        {
      import::importFile($link,$directoryDestination.$nameDestination, $importLib, $excelName,$enddate);
    $_SESSION['message'] = "ok";
}else{
    $_SESSION['erreur'] = "Error";
}

тогда в моей функции:

use PhpOffice\PhpSpreadsheet\IOFactory;

importFile($link,$filename, $importLib, $excelName,$enddate){
header('Content-Type: text/html; charset=utf-8');
    // loading Excel file
    $objPHPExcel = IOFactory::load($filename);
    ....
    database 
    ....
    // copy the file
    mkdir($new_path,0777);
    chmod($new_path, 0777);
    copy($filename,$new_path.$excelName);
    unlink($filename);

// then , in other file, I try to download the file
$contents = file_get_contents($filepath);
$mime = mime_content_type($filepath);
$size = filesize($filepath);
$parts = explode("/", $file);
$filename = end($parts);

header("Content-Type: {$mime}");
header("Content-disposition: attachment; filename=\"" . basename($filename) . "\"");
header("Content-Length: {$size}");
print($contents);
exit();

Я использую MS 2016 (PhpOffice \ PhpSpreadsheet). Я уже пытался изменить расширение файла или отремонтировать его, но он не работал

1 Ответ

0 голосов
/ 31 марта 2020

Спасибо @Danny Battison Когда я открыл файл с помощью Notpad, в верхней части файла я увидел пустые места, поэтому я добавил ob_end_clean () как раз перед этим:

ob_end_clean();
header("Content-Type: {$mime}");

И все работает нормально. Спасибо

...