У меня есть эта функция, которая генерирует мой отчет 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');
}
Я не мог понять свою ошибку, и любая помощь очень ценится.