Проблема с PHPExcel
У меня есть простая таблица:
CREATE TABLE IF NOT EXISTS `users` ( `id` int(10) NOT NULL AUTO_INCREMENT, `email` varchar(225) NOT NULL DEFAULT '', `date` datetime DEFAULT NULL, `status` int(1) NOT NULL DEFAULT '1', PRIMARY KEY (`id`) ) ENGINE=MyISAM;
Я использую PHPExcel для экспорта таблицы tha в формате XLS. Я написал простые строки PHP:
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "svn_register";
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);
// require the PHPExcel file
require 'Classes/PHPExcel.php';
// simple query
$query = "SELECT * FROM users ORDER by id DESC";
if ($result = mysql_query($query) or die(mysql_error())) {
// Create a new PHPExcel object
$objPHPExcel = new PHPExcel();
$objPHPExcel->getActiveSheet()->setTitle('List of Cities');
// Loop through the result set
$rowNumber = 1;
while ($row = mysql_fetch_row($result)) {
$col = '';
foreach($row as $cell) {
$objPHPExcel->getActiveSheet()->setCellValue($col.$rowNumber,$cell);
$col++;
}
$rowNumber++;
}
// Save as an Excel BIFF (xls) file
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="myFile.xls"');
header('Cache-Control: max-age=0');
$objWriter->save('php://output');
exit();
}
echo 'a problem has occurred... no data retrieved from the database';
Я получаю пустую страницу.
1 ответ:
Я говорил об этом несколько раз, когда вы первоначально подняли этот вопрос... этот скрипт создаст пустую страницу.
$objWriter->save('CityList.xls');
Записывает книгу Excel в файл CityList.xls в файловой системе сервера. Это не выводит ничего на экран... поэтому экран Уилл Будьте пусты.
Посмотрите на сервере. Найдите файл под названием CityList.xls. Откройте этот файл в MS Excel.
EDIT
В качестве альтернативы установите соответствующие заголовки и сохранить в php: / / output
// connection with the database $dbhost = "localhost"; $dbuser = "root"; $dbpass = ""; $dbname = "database"; mysql_connect($dbhost,$dbuser,$dbpass); mysql_select_db($dbname); // require the PHPExcel file require 'Classes/PHPExcel.php'; // simple query $query = "SELECT id FROM users ORDER by id DESC"; if ($result = mysql_query($query) or die(mysql_error())) { // Create a new PHPExcel object $objPHPExcel = new PHPExcel(); $objPHPExcel->getActiveSheet()->setTitle('List of Cities'); // Loop through the result set $rowNumber = 1; while ($row = mysql_fetch_row($result)) { $col = 'A'; foreach($row as $cell) { $objPHPExcel->getActiveSheet()->setCellValue($col.$rowNumber,$cell); $col++; } $rowNumber++; } // Save as an Excel BIFF (xls) file $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="myFile.xls"'); header('Cache-Control: max-age=0'); $objWriter->save('php://output'); exit(); } echo 'a problem has occurred... no data retrieved from the database';
EDIT 2
Альтернатива:
// Loop through the result set $rowNumber = 1; while ($row = mysql_fetch_row($result)) { $objPHPExcel->getActiveSheet()->fromArray(array($row),NULL,'A'.$rowNumber++); }
Также следует исправить эту ошибку
Править #3
Чтобы добавить строку заголовка.
$rowNumber = 1; $headings = array('Name','EMail','Phone'); $objPHPExcel->getActiveSheet()->fromArray(array($headings),NULL,'A'.$rowNumber); $rowNumber++ // Loop through the result set while ($row = mysql_fetch_row($result)) { $col = 'A'; foreach($row as $cell) { $objPHPExcel->getActiveSheet()->setCellValue($col.$rowNumber,$cell); $col++; } $rowNumber++; }