Как сделать кнопку, которая при нажатии загружает файл Excel (phpspreadsheet) - PullRequest
4 голосов
/ 14 июля 2020

У меня есть этот код ниже. Я беру существующий файл Excel под названием b1b5.xls, и я помещаю некоторые значения, как вы видите. Проблема в том, что я не знаю, как связать кнопку, при нажатии на которую загружается файл b1b5.xls с мои значения ..

<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');
?>

Ответы [ 3 ]

3 голосов
/ 14 июля 2020

Вы можете использовать атрибут загрузки в теге привязки. Он может содержать расширения, такие как .img, .pdf, .txt,. html, et c. Вот пример

<a href="/images/myw3schoolsimage.jpg" download>
1 голос
/ 14 июля 2020

Поместите код php на другую страницу и сделайте загрузку в боковой форме с публикацией метода. в page_with_code_to_generate_the_excel. php

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

вот как я это делал, это работает каждый раз, надеюсь, мой ответ помог вам ^ _ ^

0 голосов
/ 14 июля 2020

Во-первых, вы хотите разделить свои HTML и PHP скрипты.

В своей HTML ссылке на PHP скрипт обрабатывает файл Excel и отправляет правильные заголовки для принудительного включения файла в загрузите, см. этот вопрос Stackoverflow:

Принудительная загрузка файла с помощью php с использованием header () - пользователем: Kerp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...