2011-01-20 2 views
2

У меня есть простая таблица:Проблемы с 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 экспортировать тх таблицу в формате 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'; 

 

я получаю пустую страницу.

+0

Что такое $ rownumber после выхода петли? Любые данные, выходящие из запроса вообще? –

+0

Я не вижу, откуда вы получаете свою колонку. '$ col = '';' –

ответ

12

Я изложил это несколько раз, когда вы изначально подняли вопрос thsi ... этот скрипт создаст пустую страницу.

$objWriter->save('CityList.xls'); 

пишет книгу Excel в файл с именем CityList.xls в файловой системе сервера. Это NOT дисплей ничего на экран ... поэтому экран будет be blank.

Посмотрите на сервер. Найдите файл CityList.xls. Откройте этот файл в MS Excel.

EDIT

Кроме того, необходимо установить соответствующие заголовки, и сохранить в PHP: // выходной

// 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++); 
} 

также должны исправить эту ошибку

EDIT # 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++; 
} 
+0

Спасибо. Очень странно, что я получаю сообщение об ошибке: 'Предупреждение: неверный аргумент, предоставленный foreach() в C: \ xampp \ htdocs \ app \ Classes \ PHPExcel \ Worksheet.php в строке 2103' – Cheerio

+0

OK! Теперь мы куда-то попадаем. Недопустимый аргумент является подлинной ошибкой метода fromArray(). В качестве альтернативы использованию fromArray() используйте предыдущий вариант цикла while в моем примере выше. –

+0

OMG ' Неустранимая ошибка: исключить исключение« Исключение »с сообщением« Недопустимая координата ячейки AARRAY »в C: \ xampp \ htdocs \ 2011 \ register \ web \ Classes \ PHPExcel \ Cell.php: 501 Трассировка стека: # 0 C: \ xampp \ htdocs \ 2011 \ register \ web \ Classes \ PHPExcel \ Worksheet.php (959): PHPExcel_Cell :: coordFromString ('AARRAY') # 1 C: \ xampp \ htdocs \ 2011 \ register \ web \ Classes \ PHPExcel \ Worksheet.php (860): PHPExcel_Worksheet-> getCell ('AArray') # 2 C: \ xampp \ htdocs \ 2011 \ register \ web \ xls.php (31): PHPExcel_Worksheet-> setCellValue ('AArray', '115') # 3 {main} брошен в C: \ xampp \ htdocs \ 2011 \ register \ web \ Classes \ PHPExcel \ Cell.php в строке 501' – Cheerio

Смежные вопросы