Как разрешить нечитаемый контент в PhpSpreadsheet? - PullRequest
0 голосов
/ 10 июля 2019

У меня есть эта функция, которая генерирует мой отчет Excel, используя phpspreadsheet.Моя проблема заключается в том, что всякий раз, когда файл генерируется и использует более низкую версию MsExcel, он говорит Excel found unreadable content in 'sample.xlsx'. Do you want to recover..., к счастью, если я продолжу отображать отчет, но если я открою его в более высокой версии Excel, он скажет Excel cannot open the file 'sample.xlsx' because the file format or file extension is not valid. Verify ....Когда я пытаюсь открыть его на texteditor, нашел это

<!DOCTYPE html>
<html>
<head>
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.2/css/all.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
    <link href="../../includes/static/css/styles.min.css" rel="stylesheet">
    <link rel="shortcut icon" type="image/x-icon" href="../../favicon.ico">
    <title>Employee Mgt System</title>
</head>
<html>
...
</html>

Что касается моих функций, у меня есть это:

function generateReport($flag, $nationality, $month, $year1, $year2, $job, $department, $section, $category, $employee_type, $gender, $contract_type){
   //sql query
   $this->generateExcelReport($data);
}

, и это моя функция generateExcelReport:

function generateExcelReport($data){
   $spreadsheet = new Spreadsheet();
   $sheet = $spreadsheet->getActiveSheet();

   foreach ($data as $emp) {
      $spreadsheet->getActiveSheet()
      ->setCellValue('A'.$row, $emp['emp_number'])
      ->setCellValue('B'.$row, $emp['full_name']);
   }

   header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');

   header('Content-Disposition: attachment;filename="My Report.xlsx"');

   $writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
   $writer->save('php://output');
}

Я не мог понять свою ошибку, и любая помощь очень ценится.

...