PHPExcel 创建 Excel 文件后重定向页面
PHPExcel Redirect Page After Creating Excel File
我想知道如何在使用 PHPExcel 创建文件后重定向页面。创建的文件没问题,但重定向到另一个页面却不行。下面是一些代码。
$excel -> setActiveSheetIndex(0);
$_SESSION["information"] = "Motor Line Checking Completed.";
header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header("Content-Disposition: attachment;filename='".$report_name.".xlsx'");
header("Cache-Control: max-age=0");
$writer = PHPExcel_IOFactory::createWriter($excel, "Excel2007");
$writer -> save('php://output');
exit;
header("Location: ".$_SERVER["HTTP_HOST"]."/../../");
exit;
备注:
- 如果我在
save();
之后删除 exit;
,xlsx 文件将会损坏。
- 如果我在
save();
之前移动 header("Location:...");
,它会重定向但不会创建 xlsx。
- 我也尝试使用 javascript 重定向。
我想要的是创建xlsx并在之后重定向页面。
我想出了一个解决方案,只在重定向的页面上提供一个 link。从那个页面我可以为那个link创建触发器来自动下载文件。
从创建文件的页面:
$writer = PHPExcel_IOFactory::createWriter($excel, "Excel2007");
$metaDatas = stream_get_meta_data(tmpfile());
$tmpFilename = $metaDatas['uri'];
$writer -> save($tmpFilename);
$newfile = "../outbox/".$report_name."_".substr(date("Y"), -2).date("mdhis").".xlsx";
rename($tmpFilename, $newfile);
$tmpary = explode("/", $newfile);
$_SESSION["download"] = $tmpary[count($tmpary) - 1];
$_SESSION["information"] = "File Creation Completed.";
来自重定向的页面:
<?php
if(isset($_SESSION["information"])) {
echo $_SESSION["information"];
if(isset($_SESSION["download"])) {
?>
<a href="outbox/<?php echo $_SESSION["download"]; ?>">
<button class="download" type="button">Click here to download <?php echo $_SESSION["download"]; ?> file.</button>
</a>
<?php
}
session_unset();
}
?>
我想知道如何在使用 PHPExcel 创建文件后重定向页面。创建的文件没问题,但重定向到另一个页面却不行。下面是一些代码。
$excel -> setActiveSheetIndex(0);
$_SESSION["information"] = "Motor Line Checking Completed.";
header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header("Content-Disposition: attachment;filename='".$report_name.".xlsx'");
header("Cache-Control: max-age=0");
$writer = PHPExcel_IOFactory::createWriter($excel, "Excel2007");
$writer -> save('php://output');
exit;
header("Location: ".$_SERVER["HTTP_HOST"]."/../../");
exit;
备注:
- 如果我在
save();
之后删除exit;
,xlsx 文件将会损坏。 - 如果我在
save();
之前移动header("Location:...");
,它会重定向但不会创建 xlsx。 - 我也尝试使用 javascript 重定向。
我想要的是创建xlsx并在之后重定向页面。
我想出了一个解决方案,只在重定向的页面上提供一个 link。从那个页面我可以为那个link创建触发器来自动下载文件。
从创建文件的页面:
$writer = PHPExcel_IOFactory::createWriter($excel, "Excel2007");
$metaDatas = stream_get_meta_data(tmpfile());
$tmpFilename = $metaDatas['uri'];
$writer -> save($tmpFilename);
$newfile = "../outbox/".$report_name."_".substr(date("Y"), -2).date("mdhis").".xlsx";
rename($tmpFilename, $newfile);
$tmpary = explode("/", $newfile);
$_SESSION["download"] = $tmpary[count($tmpary) - 1];
$_SESSION["information"] = "File Creation Completed.";
来自重定向的页面:
<?php
if(isset($_SESSION["information"])) {
echo $_SESSION["information"];
if(isset($_SESSION["download"])) {
?>
<a href="outbox/<?php echo $_SESSION["download"]; ?>">
<button class="download" type="button">Click here to download <?php echo $_SESSION["download"]; ?> file.</button>
</a>
<?php
}
session_unset();
}
?>