PHPExcel - 而不是下载将其保存到目录

PHPExcel - instead of downloading save it to the directory

我正在尝试将 Excel 生成的文件存储到服务器目录,而不是在到达路径后下载。

我的代码:

// worksheet
$objPHPExcel->getActiveSheet()->setTitle('Podaci');                       
$objPHPExcel->setActiveSheetIndex(0);

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="mjesecni_podaci.xlsx"');
header('Cache-Control: max-age=0');

header('Cache-Control: max-age=1');

header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header ('Cache-Control: cache, must-revalidate'); 
header ('Pragma: public'); // HTTP/1.0

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
//$objWriter->save('php://output');
$putanja_spremanja_fajla = 'mail/mjesecni_podaci.xlsx';
$objWriter->save($putanja_spremanja_fajla);
sleep(1);
slanje_maila($db, $datum);

我试图删除一些 header 行,但我的文件已损坏或出现一些错误。 有什么建议么?

以下几行告诉浏览器需要一个文件。 (确切地说是 Excel 文件 mjesecni_podaci.xlsx)

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="mjesecni_podaci.xlsx"');

如果您告诉 PHPExcel 将文件保存到磁盘,则不会将任何文件传送到浏览器。 如果根本没有输出或某种回声或其他东西,您将收到错误消息或浏览器 "downloads" 文件 "mjesecni_podaci.xlsx" 以及您生成的输出。

例如:

<?php
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="mjesecni_podaci.xlsx"');

echo "Hello World!"
?>

此代码将下载内容为 "Hello World!" 的文件 "mjesecni_podaci.xlsx"。 (将文件保存到磁盘并使用 Notepad++ 或类似的编辑器打开它)

在您的代码中,您应该只删除这两行,并确保您的程序可以写入子文件夹 "mail"。之后您的代码应该可以工作。 (至少sleep(1);之前的部分).

  1. 删除所有 header()
  2. 使用完整路径:例如 /home/database/public_html/application/mail/
  3. Cron 作业:删除 if (PHP_SAPI == 'cli') die('This example should only be run from a Web Browser'); 因为这行代码检查脚本是否由服务器(cgi-fcgi)或用户(cli)"called"。

在那之后,您可以使用 cron 作业或类似的(如果服务器试图 运行 .php 脚本)。 如果您尝试通过网络浏览器到达 link,您 必须 使用 headers 因为 headers 与浏览器对话。