PHPExcel - вместо загрузки сохраните его в каталог - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь сохранить сгенерированный 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);

Я попытался удалить некоторые из строк заголовка, но затем мой файл поврежден или я получил некоторые ошибки.Какие-либо предложения?

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018
  1. Удалить все header()
  2. Использовать полный путь: например, /home/database/public_html/application/mail/
  3. Cron job: Удалить if (PHP_SAPI == 'cli') die('This example should only be run from a Web Browser');, потому что эта строка кода проверяет, является ли скрипт "называется "сервером (cgi-fcgi) или пользователем (cli).

После этого вы можете использовать задания cron или аналогичные (если пытаетесь запустить скрипт .php).Если вы пытаетесь перейти по ссылке через веб-браузер, вы должны использовать заголовки, поскольку headers общается с браузером.

0 голосов
/ 23 ноября 2018

следующие строки сообщают браузеру ожидать файл.(Точнее файл Excel mjesecni_podaci.xlsx)

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

Если вы скажете PHPExcel сохранить файл на диск, файл не будет передан в браузер.Если вообще нет вывода или какого-то эха или чего-то еще, вы получите либо сообщение об ошибке, либо браузер "загрузит" файл "mjesecni_podaci.xlsx" с произведенным вами выводом.

Дляпример:

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

echo "Hello World!"
?>

Этот код загрузит файл "mjesecni_podaci.xlsx" с содержимым "Hello World!".(Сохраните файл на диск и откройте его в редакторе, таком как Notepad ++ или аналогичный)

В своем коде вы должны просто удалить две строки и убедиться, что ваша программа может записывать в подпапку «mail».Ваш код должен работать после этого.(по крайней мере, часть до sleep(1);).

...