2017-09-06 1 views
2

에서 모든 데이터를 제공하지만PHPExcel 내가 하나의 엑셀 시트에 두 테이블에서 내 코드가 작동을 내보내려고 파일 내 코드에서</p> <p>를 Excel로 내 테이블 데이터를 내보낼 <code>PHPExcel</code>를 사용하여 MySQL의

하지 않습니다 문제는 내가 모든 데이터를 가지고있다 - 내가 5 개 행이 난 단지 4

를받을 엑셀 파일에 있어야합니다 경우 내가 무슨 뜻인지 1

를이 내 코드입니다 :

<?php 
$project=$_POST['project']; 


//populate the data 

$row=4; 
while($data=mysqli_fetch_object($query)){ 
$excel->getActiveSheet()->setCellvalue('A'.$row,$data->db_projectid) 
    ->setCellvalue('B'.$row,$data->db_projectname) 
    ->setCellvalue('C'.$row,$data->loc) 
    //incriment the row 
$row++;  
} 
//make table headers 
$excel->getActiveSheet() 
     ->setCellValue('A1','Project') 
     ->setCellValue('A3','#') 
     ->setCellValue('B3','Project Name') 
     ->setCellValue('C3','Location'); 

if(mysqli_num_rows($activitieQuery)>0){ 
    $row=7; 
while($data=mysqli_fetch_object($activitieQuery)){ 
$excel->getActiveSheet() 
    ->setCellvalue('A'.$row,$data->db_id) 
    ->setCellvalue('B'.$row,$data->db_activityname) 
    ->setCellvalue('C'.$row,$data->db_category) 
    ->setCellvalue('D'.$row,$data->db_priority); 

    //incriment the row 
$row++;  
} 
//make table headers 
$excel->getActiveSheet() 
     ->setCellValue('A6','Activities') 
     ->setCellValue('A7','#') 
     ->setCellValue('B7','Activity Name') 
     ->setCellValue('C7','Category') 
     ->setCellValue('D7','Priority'); 

} 
//write the result to a file 

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 
header('Content-Disposition: attachment; filename="project.xlsx"'); 
header('Cache-Control:max-age=0'); 
header('Cache-Control: max-age=1'); 
$file=PHPExcel_IOFactory::createWriter($excel,'Excel2007'); 
//output to php output instead of filename 
$file->save("php://output"); 
exit; 
?> 

문제없이 원하는 모든 데이터를 수신하는 방법은 무엇입니까?

내가 mysqli_num_rows($activitieQuery);를 인쇄 할 때 내가 5 번

가지고 내가 예를 $data->db_id을 위해 인쇄하는 경우 난 5 IDS하지 4

를 수신하지만 파일을 Excel로 내보낼 때 내가 5는 어떻게 해결할 수없는 4 개 ID를받을 그?

제 첫 번째 테이블에는 제 문제가 없습니다. 두 번째 테이블 tbl_activities 만 있으면 문제를 해결할 수 있습니다.

+0

이 코드를 트림 (프로그램의 모든 중요하지 않은 부분을 제거)하십시오 도움이 두 번째 쿼리에 대한 $row = 7; 시작 후 헤더로 대체 . 두 가지 목적을 수행합니다. 즉, 간단한 테스트 케이스를 끝까지 실행할 수 있으며, 더 쉽게 읽을 수 있습니다. 예를 들어 헤더 생성 부분은 관련이 없으므로 출력 파일의 모든 단일 열을 알 필요가 없습니다. 또한 문제가 Excel 자체 (예 : 루프의'echo $ data-> db_id')와 연결되어 있는지 의심 스럽기 때문에 Excel 생성 프로세스 외부에서 루프를 테스트 할 수 있습니다. – RandomSeed

+0

@RandomSeed 위의 코드를 확인하십시오. 그리고 내 루프에서 echo $ data-> db_id라고 말하면서 4가 아닌 5 개의 id를 받지만 4는 Excel에서 내 질문에 언급됩니다. –

답변

1

당신은

->setCellValue('A7', '#') 
->setCellValue('B7', 'Activity Name') 
->setCellValue('C7', 'Category') 
->setCellValue('D7', 'Priority') 
->setCellValue('E7', 'Supplier') 
... 

그래서 $row = 8;$row = 7;를 교체하는

+0

@Nikitia U 아주 많이 당신의 대답은 나를 도와주고 내 문제를 해결해 주셔서 감사합니다. –

관련 문제