0

我正在使用 PHP 通过 CSV 生成 Excel 文件。我正在使用一段非常简单的代码来准备整个函数,然后再用我自己的数据填充它:

$list = array (
  array('#', 'Registrar', 'Country', 'Website', 'Email Address'),
  array('123', '456', '789', 'aaa', 'bbb'),
  array('123', '456', '789', 'aaa', 'bbb'),
);

$fp = fopen('myfile.xls', 'w');

foreach ($list as $fields) {
  fputcsv($fp, $fields, "\t", '"');
}

fclose($fp);

代码工作正常。但是,它会自动将“myfile.xls”保存到执行 PHP 文件的目录中。我希望页面显示“打开/保存”对话框,让用户选择他/她想要保存文件的位置。我尝试了一些像这样的标题技巧:

header ("Content-Type: application/download");
header ("Content-Disposition: attachment; filename=myfile.xls");
header("Content-Length: " . filesize(myfile.xls));

但是,使用此功能时,导出的文件会显示页面内容(包括带有标题的页眉、菜单、页脚等),而不是“列表”变量中的数据......我无法阻止页眉和页脚都包含在 PHP 页面中,因为它是框架的一部分,所以我只想选择通过 PHP 的 CSV 函数生成的“myfile.xls”的存储位置。

我也考虑并尝试使用 PHPExcel 和其他旨在生成 Excel 的包,但我无法让它们中的任何一个正常工作。我已经浪费了太多天的时间来尝试它,所以我决定简单地创建一个 CSV 文件,这对于我的目的来说是可以的。我现在唯一需要的是“打开/保存”对话框,它对我来说是完美的。

提前感谢您的时间和精力!:)

4

1 回答 1

0

试试下面的代码

$file = "location of file to download"
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
于 2013-09-20T11:31:40.743 回答