【问题标题】:Output Excel file in PHP after echoecho 后在 PHP 中输​​出 Excel 文件
【发布时间】:2010-12-10 10:32:07
【问题描述】:

嗨,

我正在尝试在 results.php 中显示来自数据库的结果。在同一个文件中,在当前网页中显示所有数据后,我放置一个按钮以根据此结果创建文件以生成 Excel 文件。

我不知道该怎么做。我试过了,但它说你必须在任何回显之前强制下载 excel 文件,但我想显示和生成一个 excel 文件。这是可能的还是我错过了什么?谁能告诉我如何正确执行此操作?

【问题讨论】:

  • 你能提供一些示例代码吗?
  • 重新标记“缓存”,因为从您的 cmets 到答案,这似乎比 Excel 更多的是关于缓存

标签: php mysql caching


【解决方案1】:

您必须更改页面的标题,因此您必须在新窗口中打开 excel 文件的输出。

标题类型:“application/vnd.ms-excel”。

如果您想创建“好”的 Excel 表格,请查看 PHPExcel

PHPExcel

【讨论】:

【解决方案2】:

您可能正面临“标头已设置”错误。您需要将这两个步骤分开才能使其正常工作。一步显示,一步创建和下载excel文件。

另一方面,您也可以将数据显示和 Excel 创建结合起来,最终显示下载链接。

只是在黑暗中摸索,让我们知道您想走哪条路,我们会为您提供帮助...

【讨论】:

  • 是的,我可以将显示和创建结合起来,但是如果他想以 excel 文件格式下载结果,我将把选项留给用户。你能告诉我这两个步骤的过程吗?
  • 数据库查询“昂贵”吗? IE。运行需要很多时间吗?
  • 结果页面有很多记录。那么有没有其他方法可以在不重新查询的情况下获得这些结果?
  • 那么你需要暂时保存它们,但我同意 Adrian:你会在提到的帖子中找到解决方案。
【解决方案3】:
【解决方案4】:

先设置标题,然后回显 CSV 输出:

header("Content-type: application/text/x-csv");
header("Content-disposition: attachment; filename=report.csv");
echo "value1,value2\n";
echo "value3,value4\n";

【讨论】:

  • 是的,我可以这样做,但我主要担心的是,我已经在第一页显示了数据库中的结果,如果我创建一个在新窗口中打开的按钮,上面的代码,那我怎样才能得到已经显示的数据呢?你想让我再次运行查询吗?这有什么先例吗?
【解决方案5】:

您可以创建一个.cvs-file,它比 xls-files 简单得多,最好的部分是 excel 支持 .cvs-files。

然后,当您将数据输出给用户时,有一个名为 $cvs 之类的单独变量,您可以在 .cvs-format 中应用与输出相同的数据,完成后您 write $cvs 到文件中。

然后你只需链接到页面底部的那个文件。

不过,您可能必须向用户发送force the download

【讨论】:

  • +1:同意,但codeplex.com/PHPExcel 也让创建 Excel 文件变得容易。
  • 是的,我确实想使用 CSV 文件。但同样的事情也适用于我想准备这些数据并允许用户按需下载。
  • 是的,我在回答中的意思是你应该如何去做。也许我没有说清楚——所以我编辑了这篇文章:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多