Программирование > PHP
Excel средствами PHP
zuko:
Тема заезженная, но все же...
С помощью метода, описанного здесь собрал чтото типа:
//создаем новый объект COM – excel.application
$xls = new COM("excel.application");
// Скрываем приложение MS Excel
$xls->Application->Visible = 0;
//Создаем новую книгу
$wkb = $xls->Workbooks->Add();
// Выбрали ячейку A1
$range=$xls->Range("A1");
// Вставили значение
$range->Value = "Hello";
//Сохраняем документ
$wkb->SaveAs("C:/file.xls");
//Завершаем работу с MS Excel
$wkb->Close(false);
$xls->Workbooks->Close();
$xls->Quit();
unset($sheet);
unset($xls);
А сейчас вопрос:
Мне не надо сохранять файл на локальном диске С:
Мне необходимо выдать сгенерированный файл в браузер клиента, вернее в браузере клиента должен открыться диалог на сохранение файла.
Всевозможные хидеры на подобие:
header("Content-Disposition: attachment; filename=file.xls");
header("Content-Type: application/octet-stream\\r\\n");
header("Content-Type: application/force-download\\r\\n");
header("Content-Type: application/download\\r\\n");
header("Content-Transfer-Encoding: binary\\r\\n");
во всевозможных местах скрипта не помогают - диалог появляется, но открывается пустой файл.
hanslinger:
А application/vnd.ms-excel или как-то так если?
zuko:
без изменений... :(
zuko:
Но вот если я делаю какую-то ошибку то она отображается не в броузере, а в файле (который пустой).
Т.е. я так понимаю, не хватает какой-то одной командочки, которая работает наподобие $wkb->SaveAs("C:/file.xls"), но сохраняет данные не в файл на локальном диске, а во временный файл, который отправляется в броузер.
Пробовал методом подбора, типа $wkb->Send или $wkb->Output - не угадал...
brainkiller:
Так напишите $wkb->Send сами, какие проблемы-то? Возьмите за образец $wkb->SaveAs и перепишите код так, чтобы метод не писал вывод в файл, а отправлял http-заголовок и вывод направлял в стандартный поток.
Навигация
Перейти к полной версии