Появилась подобная задача. Беглый гуглеж показывает ссылку на массу способов это сделать, например вот такой код
spoiler<?PHP
function cleanData(&$str)
{
$str = preg_replace("/\t/", "\\t", $str);
$str = preg_replace("/\r?\n/", "\\n", $str);
if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
}
// Имя загружаемого файла.
//В моём примере получится otched_20150331.xls
$filename = "otchet_" . date('Ymd') . ".xls";
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Content-Type: application/vnd.ms-excel");
// Подключение к бд
mysql_connect ("Localhost","user","pass");// Хост юзер и пароль
mysql_select_db("my_bd") or die (mysql_error());// Имя базы данных
//Указать кодировку выводимых данных
mysql_query('SET character_set_database = cp1251_general_ci');
mysql_query ("SET NAMES 'cp1251'");
//запрос и вывод данных
$flag = false;
$result = mysql_query("SELECT * FROM user ORDER BY Data DESC")
or die('Запрос не выполнен!');
while(false !== ($row = mysql_fetch_assoc($result))) {
if(!$flag) {
// Вывод заголовков
echo implode("\t", array_keys($row)) . "\r\n";
$flag = true;
}
//Вывод данных столбцов
array_walk($row, 'cleanData');
echo implode("\t", array_values($row)) . "\r\n";
}
exit;
?>
(я знаю, что код старый, и вызов функций PHP в нем пишется по другому, но его вполне реально переделать под современный PHP небольшой правкой).
Ну и все прочие методы, которые в общем то повторяют ту же идею с implode строк в заранее созданный пустой файл с xls расширением. Но что у меня получается - так это просто текстовый файл с расширением XLS с нужными заголовками и строками, но Excel его не открывает, т.к. формат xls файла вообще то другой, и ух никак не текстовый. Я в Excel не настолько хорошо разбираюсь, чтобы понять как это надо реализовать, это вообще так может работать или нет?
У кого то была подобная задача, наверняка была, это в общем то довольно распространенная задача. Может кто-то подсказать верное направление действий?
Спасибо.