2012-07-05 46 views
2

好的,下一個PHPExcel問題。我有一個用戶填寫的HTML表單,數據將被髮送到數據庫。所有這些都沒有問題。我正在使用PHPExcel將該信息發送到Excel工作表,以便組織主席可以查看已發送的報告(他選擇了他希望在Excel中使用的報告)。當他點擊按鈕時,信息被下載到Excel中。這一切工作正常,除了工作表的第一行由標題信息覆蓋。我知道它是標題,因爲如果我更改$標題並刪除數組中的值,隱藏查詢的一部分將顯示出來。PHPExcel標題行覆蓋第一項

我得到這個代碼:http://phpexcel.codeplex.com/discussions/246121/

可能有一個編碼錯誤,或者我可能沒有上傳所有的文件和類到互聯網...

任何幫助表示讚賞。謝謝。

// connection with the database 
$dbhost = "I removed this for privacy"; 
$dbuser = "I removed this for privacy"; 
$dbpass = "I removed this for privacy"; 
$dbname = "I removed this for privacy"; 

mysql_connect($dbhost,$dbuser,$dbpass); 
mysql_select_db($dbname); 

// require the PHPExcel file 
require 'Classes/PHPExcel.php'; 

// simple query 

$query = " 

SELECT dueDate, reporterName, program, noReportReason, recentActivity, impacted, fundsGenerated, fundsSpent, volunteers, input, potentialContacts, potentialSources 
FROM reports 
ORDER BY id 

"; 

if ($result = mysql_query($query) or die(mysql_error())) 
{ 
// Create a new PHPExcel object 
$objPHPExcel = new PHPExcel(); 
$objPHPExcel->getActiveSheet()->setTitle('Quarterly Project Reports'); 

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

$rowNumber = 1; 
$headings = array('Due Date','Reporter Name','Name of Program','No Report This Quarter', 
    'Recent Activity','Number of People Impacted','Funds Generated', 
    'Funds Spent and Fuding Sources','Volunteers Mobilized','WNP Input', 
    'Potential Contacts','Potential Sources'); 
$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++; 
} 

//bold Header row 
$objPHPExcel->getActiveSheet()->getStyle('A1:L1')->getFont()->setBold(true); 

//wrap column D 
$objPHPExcel->getActiveSheet()->getStyle('D1:D'.$objPHPExcel->getActiveSheet()->getHighestRow())->getAlignment()->setWrapText(true); 

//wrap column E 
$objPHPExcel->getActiveSheet()->getStyle('E1:E'.$objPHPExcel->getActiveSheet()->getHighestRow())->getAlignment()->setWrapText(true); 

//set header row height 
$objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(20); 

//set column widths 
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(15); 
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20); 
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(30); 
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(50); 
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(50); 
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(30); 
$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(30); 
$objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(30); 
$objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(30); 
$objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(30); 
$objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(30); 
$objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(30); 

// 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="WNPQuarterlyReports.xls"'); 

$objWriter->save('php://output'); 
exit(); 
} 
echo 'a problem has occurred... no data retrieved from the database'; 

回答

2

你確實有通過這段代碼中的結果兩個環,一個開始於列#1,你然後再覆蓋1行與您的標題,然後通過ResultSet循環(這實際上不會循環,因爲你已經在第一個循環中達到結果集的末尾),從第2行開始

+0

感謝您的快速回答。我刪除了一個循環,必須複製和粘貼太多次。這解決了我的問題。很高興有你的偉大的眼睛。 – tehlivi 2012-07-05 17:49:16