Экспорт PHP в файл Excel дает мне исходный код в столбцах

Я чувствую, что делаю простую ошибку, но не могу понять, в чем.

У меня есть код для экспорта таблицы mySQL в файл Excel.

Однако, когда я делаю экспорт, весь исходный код HTML экспортируется вместе с моими данными. Я открываю файл в Excel, и мои табличные данные там, но в нем также есть весь HTML.

Что может быть причиной экспорта всего исходного кода вместе с данными?

Я должен упомянуть, что я использую этот код как часть плагина Wordpress, который я пишу. Когда я тестирую экспорт вне WordPress, он работает нормально. Но когда я пытаюсь экспортировать со страницы администратора Wordpress, я получаю весь дополнительный исходный код HTML.


person Stepppo    schedule 01.10.2010    source источник
comment
Есть ли вызов get_header() где-нибудь в вашем скрипте экспорта или в используемой теме/шаблоне? Я готов поспорить, что HTML-код, который вы встраиваете, является каркасом шаблона.   -  person Marc B    schedule 01.10.2010
comment
Вы в основном сохраняете свой html, но даете файлу расширение .xls?   -  person Mark Baker    schedule 01.10.2010
comment
@MarcB - на самом деле я не вижу этой точной функции на стороне администратора, но я думаю, что должно быть что-то похожее. Как я могу разобраться в проблеме со строительными лесами? Или что я могу сделать, чтобы предотвратить это? Я не слышал об этом раньше.   -  person Stepppo    schedule 01.10.2010
comment
@Mark Baker - Да, это то, что происходит, но я не хочу, чтобы HTML был там.   -  person Stepppo    schedule 01.10.2010
comment
WP предполагает, что все страницы, которые вы создаете, будут частью самого сайта. Вы должны специально сделать шаблон страницы, который НЕ выводит строительные леса (заголовки/нижние колонтитулы/меню/и т. д.), которые в противном случае WP автоматически выплевывает, искажая данные Excel.   -  person Marc B    schedule 02.10.2010
comment
К. Спасибо. Я попробую и дам вам знать.   -  person Stepppo    schedule 04.10.2010


Ответы (1)


Попробуйте этот код.

$host = 'localhost';
$user = 'mysqlUser';
$pass = 'myUserPass';
$db = 'myDatabase';
$table = 'products_info';
$file = 'export';

$link = mysql_connect($host, $user, $pass) or die("Can not connect." . mysql_error());

mysql_select_db($db) or die("Can not connect.");


$res = mysql_query("SELECT * FROM $table");

// fetch a row and write the column names out to the file
$row = mysql_fetch_assoc($res);
$line = "";
$comma = "";
foreach($row as $name => $value) {
    $line .= $comma . '"' . str_replace('"', '""', $name) . '"';
    $comma = ",";
}
$line .= "\n";
fputs($fp, $line);

// remove the result pointer back to the start
mysql_data_seek($res, 0);

// and loop through the actual data
while($row = mysql_fetch_assoc($res)) {

    $line = "";
    $comma = "";
    foreach($row as $value) {
        $line .= $comma . '"' . str_replace('"', '""', $value) . '"';
        $comma = ",";


    }
     $line .= "\n";
    fputs($fp, $line);

}

fclose($fp);
header('Content-type: application/csv');
header('Content-Disposition: attachment; filename="export.csv"');
readfile('export.csv'); 

Спасибо,

Кандзи

person Community    schedule 04.10.2010