php экспорт в excel не работает в IE на сайте - PullRequest
0 голосов
/ 25 октября 2011

Я пытаюсь экспортировать данные из базы данных в таблицу Excel, используя php и mysql. Он отлично работает на моем локальном хосте в IE и во всех браузерах, но не работает на реальном веб-сайте в IE (сайт hostmonster). Он говорит, что файл не может быть загружен.

Это мой пример кода, который генерирует динамические данные и предлагает скачать:

<?php
while($node_stmt = mysql_fetch_array($result))
    {
    $contents.="\t\t".$node_stmt['uniqueid']."\t";          
    $contents.=$node_stmt['title'].' '.
    ucfirst($node_stmt['firstname']).' '.
    ucfirst($node_stmt['lastname'])."\t";

        $contents.=$node_stmt1['topic']."\t";
        $contents.=$abst."\t";
        $contents.=$node_stmt['email']."\t";
        $contents.=$node_stmt['phoneno']."\t";
        $contents.=$pay."\t";
        $contents.=$node_stmt['state_id']."\t";
        $contents.=$node_stmt['country_id']."\n";
    }

.....

header('Content-Transfer-Encoding: none');
header('Content-Type: application/vnd.ms-excel;'); // This should work for IE & Opera
header("Content-type: application/x-msexcel"); // This should work for the rest
header('Content-Disposition: attachment; filename="'.basename($filename).'"');

echo $contents; 
?>

Нужно ли менять какие-либо настройки на хосте или IE?

Ответы [ 2 ]

1 голос
/ 25 октября 2011
$filename ='excelreport.xls';
$contents = "testdata1 \t testdata2 \t testdata3 \t \n";
header('Content-type: application/ms-excel');
header('Content-Disposition: attachment; filename='.$filename);
echo $contents;
1 голос
/ 25 октября 2011

Ваш файл не application/vnd.ms-excel и не application/x-msexcel, это text/tab-separated-values http://www.iana.org/assignments/media-types/text/tab-separated-values

Однако этот тип MIME может быть недостаточно известен, поэтому используйте text/csv, который будет работать нормально для tsv какну.

Кроме того, когда вы делаете Content-Disposition: attachment, это означает, что сохранить файл.Если вы хотите, чтобы браузеры открывали его в Excel, вам нужно inline.(Некоторые браузеры позволяют пользователю переопределять это, некоторые нет.)

...