使用 ms-excel http 扩展打开 php 生成的 html 表以在 Excel 中打开的正确标头

问题描述 投票:0回答:1

大家好。

我使用 PHP 生成 HTML 表格,该表格也应该能够导出(对于 Excel)。有一段时间我使用数据表来做到这一点。但它的 js 非常重,并且在更大的桌子上无休止地运行。 我知道excel可以读取html。但仅仅强制下载 HTML 表就意味着我的用户需要在 Windows 中通过“打开方式”导航才能在 Excel 中打开它。正如你们中的一些人可能猜到的那样,这太多了。

我也知道office安装了像“ms-excel”这样的http扩展,所以我尝试使用“ms-excel:ofv|u|http://intranet/report.php”强制系统直接用excel打开html ?导出=excel"

不幸的是,Excel 说这是一个未知命令。 但是如果我以通常的方式保存它,将文件放在服务器上,然后使用“ms-excel:ofv|u|http://intranet/exported_file.htm”重试它就可以了。

所以我认为问题出在标题中,但我无法确定哪个是正确的。是不是写错了或者漏掉了?

header('Content-Description: File Transfer');
header("Content-Type: text/html");
//header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="exported_'.time().'.htm"');
header('Content-Transfer-Encoding: binary');
header('Connection: Keep-Alive');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: 11386');

或者,我可以将生成的 html 保存在服务器上并提供链接,但这远不是一个优雅的解决方案。

php excel download
1个回答
1
投票

我发现问题与我的想法相反,问题不是标题。 这是网址。看来 Office 会忽略标题中给出的文件名,而 只查看 URL 。如果 URL 中的文件是 .html 或 .htm 文件,则可以使用。

对于我的情况,解决方案是告诉 Apache2 不仅在 php 文件中执行 php,而且在 htm 和 html 文件中执行 php。并重命名我的脚本。 我知道这可能会引起一些安全问题,但就我而言,它位于客户内联网中,并且我是唯一在其上放置文件的人。

© www.soinside.com 2019 - 2024. All rights reserved.