【问题标题】:How to make a button, that when you click it downloads an excel file (phpspreadsheet)如何制作一个按钮,当您单击它时会下载一个 excel 文件(phpspreadsheet)
【发布时间】:2020-11-04 01:33:12
【问题描述】:

我在下面有这段代码。我正在使用一个名为 b1b5.xls 的现有 excel,并且我正在输入一些值,如您所见。问题是我不知道如何关联一个按钮,当我单击它时,下载 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');
?>

【问题讨论】:

标签: javascript php html


【解决方案1】:

您可以在锚标签中使用下载属性。它可以包含 .img、.pdf、.txt、.html 等扩展名。 这是一个例子

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

【讨论】:

  • @Hanzalo Saeed 这可行,但他想在下载时动态填充该文件。至少如果我没有弄错原始问题的话。
  • 我能把所有的代码都放在一个而且只有一个 index.php 中吗?我问这个是因为如果我在href 内执行此&lt;a href="/images/myw3schoolsimage.jpg" download&gt;,我将不得不放置我唯一索引的名称。所以如果我加载索引,它会立即下载,而不是如果有人点击它。所以我想我必须有 2 个脚本?一个html索引和一个php?
【解决方案2】:

首先,您要将 HTML 和 PHP 脚本分开。

在您的 PHP 脚本的 HTML 链接中处理 excel 文件并发送正确的标题以强制文件下载,请参阅此 Stackoverflow 问题:

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

【讨论】:

    【解决方案3】:

    将 php 代码放在另一个页面中,并使用 post 方法以侧面形式进行下载。 在 page_with_code_to_generate_the_excel.php

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

    我每次都是这样,希望我的回答对你有帮助^_^

    【讨论】:

    • 我认为这是正确的方法......但我对此有一个疑问。如果我有 2 个电子表格,我可以这样做吗?一个是我正在加载现有文件..另一个是我自己从一开始就创建的?
    • 你可以用这种方法制作多个电子表格,只需为你添加另一个不同内容的 php 页面,如果你想下载 Microsoft Office 的 Excel 文件,你可以上传你的工作并让用户从您的网站下载它,如果您看到我的回答对您有帮助,请将我的评论标记为正确答案
    • 所以如果我这样做..它有点像上面的答案一样吗? &lt;a href="/images/myw3schoolsimage.jpg" download&gt; 但你的回答结构更好?
    • 对于您已经由 Microsoft office 完成的 excel 文件,这是一种简单的方法 ,对于您的动态内容,您必须在 php 中完成页面,^_^
    • 好的,我明白了,所以如果我想在你离开的情况下这样做..我的表单将有 action="downloadExcel.php" 例如,代码将带有 isset 标签等......我要测试它
    猜你喜欢
    • 2023-02-06
    • 2020-11-05
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多