У меня есть страница .php с таблицей HTML, похожей на эту: -
<table border="1">
<tr bgcolor="DCDCDC">
<th><div align="center"><b>Data1</b></div></th>
<th><div align="center"><b>Data2</b></div></th>
<th><div align="center"><b>Data3</b></div></th>
</tr>
таблица затем имеет некоторые данные, показанные под ней. Я разрешаю передать переменную в URL, если пользователь хочет загрузить файл .xls таблицы на свой ПК. Код загрузки файла похож на этот: -
function savexls(){
$data = array( array("Data1" => "Mary", "Data2" => "Johnson", "Data3" => 25),
array("Data1" => "Amanda", "Data2" => "Miller", "Data3" => 18),
array("Data1" => "James", "Data2" => "Brown", "Data3" => 31),
array("Data1" => "Patricia", "Data2" => "Williams", "Data3" => 7),
array("Data1" => "Michael", "Data2" => "Davis", "Data3" => 43),
array("Data1" => "Sarah", "Data2" => "Miller", "Data3" => 24),
array("Data1" => "Patrick", "Data2" => "Miller", "Data3" => 27) );
# filename for download
$filename = "Dividend Data " . date("F j, Y") . ".xls";
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Content-Type: application/vnd.ms-excel");
$flag = false;
foreach($data as $row) {
if(!$flag) {
# display field/column names as first row
echo implode("\t", array_keys($row)) . "\r\n";
$flag = true;
}
array_walk($row, 'cleanData');
echo implode("\t", array_values($row)) . "\r\n";
}
}
function cleanData(&$str)
{
$str = preg_replace("/\t/", "\\t", $str);
$str = preg_replace("/\r?\n/", "\\n", $str);
if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
}
Я вызываю функцию savexls () в коде php, используя следующую строку кода после извлечения переменной, если она есть в URL: -
if ($xls=="y") {
savexls();
}
Проблема, с которой я столкнулся, заключается в том, что если я объявлю в URL-адресе? Xls = y, данные таблицы html не будут выведены на экран, хотя файл xls ДОЛЖЕН быть загружен на ПК.
Если я не объявлю это? Xls = y, тогда файл .XLS НЕ будет загружен, и таблица HTML будет напечатана на экране нормально.
Почему сам процесс записи файла .xls останавливает вывод другой HTML-таблицы на экран? Для меня они выглядят совершенно отдельными функциями, но сохранение файла, похоже, останавливает первый код печати HTML, перестающий выполнять свою работу.
Я застрял в том, в чем проблема, кроме смутного ощущения, что, возможно, мне следует печатать таблицу и сохранять файл xls в разных файлах PHP, и это может решить мою проблему, но я ' Я не уверен, как это сделать.
Во-первых, я хотел бы знать, почему возникает проблема с этим, а во-вторых, есть ли хороший способ решить эту проблему?