2014-01-28 91 views
1

我想用PHPExcel將一些數據導出到Excel工作表。然而,它留給我一個空白頁面,沒有別的(我明白這是正常的,但下載不會觸發)。使用PHPExcel和MySQL導出到Excel

編輯:爲這個問題的其餘部分打開一個新的問題。感謝您對這一切的幫助!

我在這裏做錯了什麼?這是我的代碼(根據上述更新)

問題:求助。錯誤:變量名稱不匹配($ RowCount vs $ Rowcount)。

<?php 
$download=""; 
if (isset($_GET['surveyid'])) { 
//Survey ID 
$download = $_GET['surveyid']; 
require_once('../Classes/PHPExcel.php'); 

$query=sprintf("SELECT b.question_id as qid, a.question as ques, b.response as response, count(b.response) as count 
FROM v3_sai.survey_responses b 
INNER JOIN v3_sai.survey_questions a ON a.id = b.question_id AND a.survey_id=%d 
group by b.response, a.question 
order by b.question_id;",GetSQLValueString($download,"int")); 
$resultdl= mysql_query($query) or die(mysql_error()); 
$objPHPExcel = new PHPExcel(); 
$objPHPExcel->setActiveSheetIndex(0); 
$rowcount=1; 
while($row = mysql_fetch_array($resultdl)){ 
    $objPHPExcel->getActiveSheet()->SetCellValue('A'.$rowcount, $row['qid']); 
    $objPHPExcel->getActiveSheet()->SetCellValue('B'.$rowcount, $row['ques']); 
    $objPHPExcel->getActiveSheet()->SetCellValue('C'.$rowcount, $row['response']); 
    $objPHPExcel->getActiveSheet()->SetCellValue('D'.$rowcount, $row['count']); 
$rowCount++; 
} 
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); 
header('Content-type: application/vnd.ms-excel'); 
header('Content-Disposition: attachment; filename="file.xls"'); 
$objWriter->save('php://output'); 

} 
+0

你看過你的php錯誤日誌來檢查錯誤嗎?您的php.ini中的警告級別設置爲E_ALL?發佈來自這兩個來源的任何錯誤。 – Zak

+0

警告級別設置爲E_ALL!我在哪裏可以找到php錯誤日誌? –

+0

如果你的意思是在wamp的「Logs」文件夾中的php_error文件,它是空的 –

回答

2

你做了一些錯誤在您的SQL查詢:

"SELECT b.question_id as qid, a.question as ques, b.response as response, count(b.response) as count ..." 

參見count(b.response) as count。將別名count更改爲另一個。

還在查詢結束時刪除;

EDIT

功能GetSQLValueString未被定義,而不是天然的。 更改代碼:

$query = "SELECT b.question_id as qid, 
       a.question as ques, 
       b.response as response, 
       count(b.response) as cnt 
      FROM v3_sai.survey_responses b 
      INNER JOIN v3_sai.survey_questions a 
      ON a.id = b.question_id 
       AND a.survey_id=".intval($download)." 
      group by b.response, a.question 
      order by b.question_id"; 

而且改變這一行:

$objPHPExcel->getActiveSheet()->SetCellValue('D'.$rowCount, $row['cnt']); 
+0

做出這些變化,仍然沒有:( –

+0

你確定'$ _GET ['surveyid']'不是空的?雖然我沒有看到更多錯誤 – voodoo417

+0

是的,我已經檢查,它現在設置爲「2」 –

1

空白頁通常指的display_errors是關閉...這使調試痛苦。

設置或在php.ini中添加以下內容並重新啓動服務器(如果您有多個php.ini文件,請使用phpinfo()函數確保您正在編輯正確的文件)。

display_errors = On 

我也打開錯誤日誌記錄,所以我可以找到錯誤並在事後解決這些問題,所以這些php.ini文件的修改將使它:

log_errors = On 
error_log = n:/uniservers/coral/php_errors.log (set your destination here). 

一旦你有顯示錯誤開啓,它應該是你找到錯誤的小菜一碟。

Joey

+0

display_errors已經設置爲開,log_errors –

+0

你在錯誤日誌中看到了什麼錯誤呢? –