javascript - How to make a button, that when you click it downloads an excel file (phpspreadsheet)

I have this code below. I am taking an existing excel called b1b5.xls and i am putting some values as you can see.. The problem is that i don't know how to assosiate a button that when i click it, the b1b5.xls is been downloaded with my values..

<html>
<head>

</head>
<body>

<center>
  <button onclick=" somefunction ?? ">Download!</button>
</center>


</body>
</html>

<?php

require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\IOFactory;



$spreadsheet = IOFactory::load('b1b5.xls');
$sheet = $spreadsheet->getActiveSheet();

$sheet->setCellValue('C7', 'Myvalue');
$sheet->setCellValue('C8', 'Myvalue2');


foreach (range('A', 'E') as $col) {
    $sheet->getColumnDimension($col)->setAutoSize(true);
}

$filename = 'trapezas_ellados.xlsx';
// Redirect output to a client's web browser (Xlsx)
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $filename . '"');
header('Cache-Control: max-age=0');
// If you're serving to IE 9, then the following may be needed
header('Cache-Control: max-age=1');

// If you're serving to IE over SSL, then the following may be needed
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
header('Pragma: public'); // HTTP/1.

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

Answer

Solution:

You can use the download attribute in anchor tag. It can contain extensions like .img, .pdf, .txt, .html, etc. Here is an example

<a href="/images/myw3schoolsimage.jpg" download>

Answer

Solution:

Put the php code in another page and make the download in side form with method post . in the page_with_code_to_generate_the_excel.php

if(isset($_POST){ ..PUT THE PHP CODE HERE}

that's how I did it it work every time, I hope my answer helped you ^_^

Answer

Solution:

First, you wanna separate your HTML and PHP Script.

In your HTML link to your PHP Script processing the excel file and send the correct headers for forcing the file to download, see this Stackoverflow question:

Force file download with php using header() - by User: Kerp

Source