2012-07-05 6 views
2

좋아, 다음 PHPExcel 질문. 사용자가 채우고 데이터가 데이터베이스로 전송되는 HTML 양식이 있습니다. 이 모든 것은 문제없이 작동합니다. 저는 ExcelExcel 워크 시트에 정보를 보내 PHPExcel을 사용하여 조직의 사장이 보낸 보고서를 볼 수 있도록했습니다 (그는 Excel에서 원했음을 선택했습니다). 버튼을 클릭하면 정보가 Excel로 다운로드됩니다. 이 모든 것은 잘 작동하지만, 워크 시트의 첫 번째 줄은 헤더 정보로 덮여 있습니다. $ headings을 변경하고 배열에서 값을 삭제하면 숨겨진 쿼리의 일부가 표시되므로 헤더라는 것을 알고 있습니다. 코딩 오류가있을 수 있습니다 http://phpexcel.codeplex.com/discussions/246121/첫 번째 항목을 포함하는 PHPExcel 헤더 행

, 아니면 어떤 도움에 감사드립니다

인터넷에있는 모든 파일 및 클래스를 ... 업로드하지 않을 수 있습니다

나는에서이 코드를 얻었다. 감사.

// 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에서 시작하는이 코드의 결과 집합을 통해 두 개의 루프를해야합니까 당신 때문에 첫 번째 루프에서 결과 집합의 끝에 도달했습니다.) 행 2에서 시작합니다.

+0

빠른 답변 감사드립니다. 내가 루프 중 하나를 삭제하고 너무 많이 복사하고 붙여 넣었어야합니다. 그게 내 문제를 해결해 줬어. 당신의 위대한 눈을 가지고있어 기쁘다. – tehlivi

관련 문제