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)

RSS
+
0
template.xls точно лежит в доступном для скрипта месте? ;)
avatar

Andrey.korea

  • 25 сентября 2011, 06:41

Только зарегистрированные и авторизованные пользователи могут отвечать.