2017-09-06 67 views
2

給所有的數據我用PHPExcel導出我的表中的數據excel文件PHPExcel不從MySQL

在我的代碼我嘗試從2個表導出一個excel表我的代碼工作,但

的問題是我所有的數據 - 1

我的意思,如果我有5行應該是在Excel文件我只收到4

這是我的代碼:

<?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個id,而不是4

但是,當我導出到Excel文件,我收到4個id,而不是5我該如何解決那?

對於我的第一張表我沒有任何問題我的問題是與第二張表tbl_activities只有任何一個有想法如何解決?

+0

請修剪你的代碼(刪除你的程序的所有非必要的部分) 。它有兩個目的:你可以在你的最後運行一個更簡單的測試用例,而且它更容易閱讀。例如,標題生成部分是不相關的,我們不需要知道輸出文件的每一列。此外,您可能想要在Excel生成過程之外測試您的循環,因爲我懷疑問題是否與Excel本身相關聯(例如,在循環中只是'echo $ data-> db_id')。 – RandomSeed

+0

@RandomSeed請檢查上面的代碼,並在我的循環中,我做了你所說的echo $ data-> db_id,並且我收到5個ids而不是4,但是在excel中我有4個,並且在我的問題中提到了感謝您的回覆 –

回答

1

你跟$row = 7;開始你的第二個查詢,然後用頭代替它

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

因此,與$row = 8;更換$row = 7;應該幫助

+0

@Nikitia非常感謝你的回答幫助我解決了我的問題 –