PHP и Excel
есть сайт. на сайте есть таблица. нужно сделать выгрузку этой таблицы в эксель. скрипт я сделал, работал с PHPExcel. только вот в чем проблема:
на локалхосте все правильно работает - появляется диалоговое окно сохранения файла, таблица отображается правильно. но, когда я загружаю этот скрипт на сервер, появляется ошибка:
Fatal error: Uncaught exception 'Exception' with message 'The filename template.xls is not recognised as an OLE file' in /home/www/seo/private_office/excel/Classes/PHPExcel/Shared/OLERead.php:80
Stack trace:
#0 /homewww/seo/private_office/excel/Classes/PHPExcel/Reader/Excel5.php(529): PHPExcel_Shared_OLERead->read('template.xls')
#1 /home/www/seo/private_office/excel/excel.php(23): PHPExcel_Reader_Excel5->load('template.xls')
#2 {main}
thrown in /home/www/seo/private_office/excel/Classes/PHPExcel/Shared/OLERead.php on line 80
вот код:
set_include_path(get_include_path() . PATH_SEPARATOR . 'Classes/');
$conn=mysql_connect("127.0.0.1","root","123456");
mysql_query("SET NAMES 'cp1251';");
mysql_query("SET CHARACTER SET 'cp1251';");
mysql_query("SET SESSION collation_connection = 'cp1251_general_ci';");
mysql_select_db("test2");
$user_id = $_GET["user_id"];
$date = $_GET["date"];
//подключаем и создаем класс PHPExcel
include_once 'PHPExcel.php';
$pExcel = new PHPExcel();
// include_once 'PHPExcel/IOFactory.php';
// $objReader = PHPExcel_IOFactory::createReader('Excel5');
// $objPHPExcel = $objReader->load("template.xls");
include_once 'Classes/PHPExcel/Reader/Excel5.php';
$objReader = new PHPExcel_Reader_Excel5();
$objPHPExcel = $objReader->load("template.xls");
$objPHPExcel->setActiveSheetIndex(0);
$aSheet = $objPHPExcel->getActiveSheet();
$aSheet->setTitle('Отчет по продвижению');
$sql = "select project_name, site from seo where user_id = ".$user_id." and date_pr = '".$date."' limit 0, 1";
$result = mysql_query($sql, $conn);
$row = mysql_fetch_array($result);
$aSheet->setCellValue('A1', iconv("CP1251", "UTF-8", $row["project_name"]));
$aSheet->setCellValue('B1', $row["site"]);
$sql = "select query, posYandex, posGoogle from seo where user_id = ".$user_id." and date_pr = '".$date."'";
$result = mysql_query($sql, $conn);
$i = 4;
while($row = mysql_fetch_array($result))
{
$aSheet->setCellValue('A'.$i, iconv("CP1251", "UTF-8",$row["query"]));
$aSheet->setCellValue('B'.$i, $row["posYandex"]);
$aSheet->setCellValue('C'.$i, $row["posGoogle"]);
$i++;
}
//отдаем пользователю в браузер
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="rate.xls"');
header('Cache-Control: max-age=0');
include("PHPExcel/Writer/Excel5.php");
$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
$objWriter->save('php://output');
Дополнение #1: точно
Ответы (1)
RSSAndrey.korea
Только зарегистрированные и авторизованные пользователи могут отвечать.