2011-01-20 61 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對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'; 

 

我得到一個空白頁。

+0

循環退出後的$ rownumber是什麼?任何數據都離開了查詢? – 2011-01-20 14:10:36

+0

我不'看到你從哪裏得到你的專欄。 `$ col ='';` – 2015-10-19 17:11:11

回答

12

我說這幾個時間,當你最初提出thsi問題...該腳本會產生一個空白頁。

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

將Excel工作簿寫入服務器文件系統上名爲CityList.xls的文件。它確實顯示任何內容到屏幕...所以屏幕是空白。

查看服務器。找到名爲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'; 

編輯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++; 
}