Я использую PHP для генерации файла Excel через CSV. Я использую очень простой фрагмент кода для подготовки всей функции до заполнения ее собственными данными:PHP показать диалог «открыть/сохранить»
$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));
Однако при использовании этого экспортируемый файл отображает содержимое страницы (которая включает в себя заголовок с названием, меню, колонтитул и т.д.) вместо данные в переменной «list» ... Я не могу запретить заголовок или нижний колонтитул быть включенным в PHP-страницу, поскольку это часть структуры, поэтому я просто хочу выбрать, где «myfile.xls» генерируется через сохраняется CSV-функция PHP.
Я также рассмотрел и попытался использовать PHPExcel и другие пакеты, предназначенные для генерации Excel, но я не могу заставить их работать нормально. Я потерял слишком много дней, пытаясь это, поэтому я решил просто создать CSV-файл, который подходит для моих целей. Единственное, что мне нужно сейчас - это диалог «открыть/сохранить», и это будет идеально для меня.
Заранее благодарим за ваше время и усилия! :)
Большинство фреймворков обеспечивают некоторый механизм, позволяющий вам подавлять свои собственные заголовки и использовать свои собственные вместо этого, так какие рамки вы используете? –
Привет, Марк! Я использую Yii Framework, который всегда «внедряет» свои страницы внутри фреймворка, показывая заголовок, меню и нижний колонтитул ... – Johanovski
Я не эксперт в области фреймворков, но обязательно должен быть встроен метод Yii который подавляет свои собственные заголовки, позволяя вам переопределять их с помощью пользовательских заголовков: например для обслуживания не-html-данных (http://www.yiiframework.com/forum/index.php?/topic/7522-http-headers-simple-question/) –