PHPExcel

darksmoke

Новичок
Добрый день
Вы простите меня за ламерский вопрос, но деваться некуда, надо решать проблему.
Значит генерируется у меня экселевский файл и потом выскакивает окно с предложением сохранить файл. поставили задачу этот файл отправлять на почту. Как готовый файл засунуть в переменную, что бы потом в функцией mail() отправить письмо с вложенным экселем?
PHP:
// выше всякий код для генерации файла 
// отдаем пользователю в браузер
include("PHPExcel/Writer/Excel5.php");
$objWriter = new PHPExcel_Writer_Excel5($pExcel);
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="rate.xls"');
header('Cache-Control: max-age=0');
$objWriter->save('php://output');
 

darksmoke

Новичок
как отправлять почту я знаю, мне надо этот эксель файл прикрепить файлом. А у меня все время выскакивает окно которое предлагает его сохранить
 

shelestov

я тут часто
Ну вот я так подозреваю, что тут можно указать временный файлик:
PHP:
$objWriter->save('php://output');
Потом прикрепить к письму и отправить.
Заголовки в таком случае нужно удалить.
PHP:
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="rate.xls"');
header('Cache-Control: max-age=0');
 

hell0w0rd

Продвинутый новичок
А чем отличается от обычной отправки файла?
sys_get_temp_dir() и tempnam() твои друзья)
 

darksmoke

Новичок
Спасибо. Все получилось.

А вот еще вопрос, с которым уже неделю мучаюсь
Когда выгружаю Excel, то мне браузер, не важно какой, предлагает открыть как HTML страницу, т.е. он не ассоциирует xls как Excel.
PHP:
Формирую excel файл
.......
 
include("PHPExcel/Writer/Excel5.php");
$objWriter = new PHPExcel_Writer_Excel5($pExcel);
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="exim.xls"');
header('Cache-Control: max-age=0');
 
$objWriter->save('php://output');
Пробовал менять заголовки (application/vnd.ms-exce), ничего не помогает
Как заставить браузер видеть что это excel.

Причем открываю с других сайтов Excel файл, и браузер понимает нормально как эксель, т.е. бок где то с кодом (((
 

bbldzr

Новичок
Попробуйте ещё в .htaccess прописать mime-тип для этого файла.
PHP:
AddType application/vnd.ms-excel xls
<тут было малость бреда>
 
Последнее редактирование:

WMix

герр M:)ller
Партнер клуба
darksmoke
PHP:
header('Content-type: application/ms-excel');
header('Content-Disposition: attachment; filename=exim.xls');//кавычки можно убрать
bbldzr
бредишь?
 

AmdY

Пью пиво
Команда форума
darksmoke
а ты не гадай, посмотрю и сбрось сюда все заголовки, которые отдаёт сервер.
 

WMix

герр M:)ller
Партнер клуба
Код:
HTTP/1.1 200 OK
Server: nginx admin
Date: Thu, 12 Sep 2013 18:59:05 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.3.27
P3P: CP="NOI NID ADMa OUR IND UNI COM NAV"
Content-Disposition: attachment;filename="exim.xls"
Cache-Control: max-age=0
Set-Cookie: SN52092501c7c26=d0380db4beeb26f757b7080645f9b057; path=/
Content-Encoding: gzip
я не вижу правильного заголовка

А как посмотреть?
https://developers.google.com/chrome-developer-tools/
https://developers.google.com/chrome-developer-tools/docs/network
 
Последнее редактирование:

darksmoke

Новичок
Сделал такие заголовки
PHP:
header('Accept-Ranges: bytes');
header("Connection: close", true);
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename=exim.xls');
header('Cache-Control: max-age=0');
Первые два вообще не появляются (
И контент тайп другой, а не тот который я указал (
 
Последнее редактирование:
Сверху