2017-04-25 55 views
0

Iam使用PHPEXCEL類導出數據和從mysql到excel的列圖。從mysql插入數據到phpexcel的陣列

如果我從例如在phpexcel使用陣列讀取

$sheet = array(

    array(
    '', 
    '2010', 
    '2011', 
    '2012', 
), 
    array(
    'Q1', 
    '12', 
    '15', 
    '21', 
), 
    array(
    'Q2', 
    '56', 
    '73', 
    '86', 
), 
    array(
    'Q3', 
    '52', 
    '43', 
    '66', 
), 
    array(
    'Q4', 
    '52', 
    '33', 
    '46', 
) 
); 




foreach($sheet as $row => $columns) { 
    foreach($columns as $column => $data) { 
     $objWorksheet->setCellValueByColumnAndRow($column, $row + 1, $data); 
    } 
} 
?> 

和我有MySQL代碼:

$gdg = mysql_query("SELECT a.building_id, b.building_name FROM ticket_open a JOIN m_building b ON a.building_id = b.building_id GROUP BY b.building_id ORDER BY b.building_name ASC"); 
    while($hsldgd = mysql_fetch_array($gdg))      
    { 

     $gdgid = $hsldgd['building_id']; 
     $gdgname = $hsldgd['building_name']; 

      $comp = mysql_query("SELECT ifnull(count(ticket_no),0) as jcomp FROM ticket_open WHERE STATUS = 'completed' AND 
           building_id = '$gdgid' "); 
      $hslcomp = mysql_fetch_array($comp);  

      $ncomp = mysql_query("SELECT ifnull(count(ticket_no),0) as jncomp FROM ticket_open WHERE STATUS != 'completed' AND 
           building_id = '$gdgid'"); 
      $hslncomp = mysql_fetch_array($ncomp); 


     $jmlnot = $hslncomp['jncomp']; 
     $jmlcomp = $hslcomp['jcomp']; 
     $jmltick = $hslncomp['jncomp'] + $hslcomp['jcomp'] ; 


     $sheet = array (
       array (

       $gdgname, 
       $jmlnot, 
       $jmlcomp, 
       $jmltick, 
       ), 
      ); 


foreach($sheet as $row => $columns) { 
foreach($columns as $column => $data) { 
    $objWorksheet->setCellValueByColumnAndRow($column, $row + 1, $data); 
} 
} 

此代碼只讀的最後數據的,不是所有的數據

請幫我:)

謝謝,

+0

你試過調試它,看看你是否從MySQL部分得到正確的結果? (提取+構建數組) – Gal

+0

你的問題可能在這裏-' $ sheet = array'。 while循環的每次迭代都會覆蓋變量。 – Gal

+0

此外,你應該永遠不會有一個循環內的mysql查詢,這是非常低效 – Gal

回答

0

試試下面的代碼:

$sheet = array(); 
$gdg = mysql_query("SELECT a.building_id, b.building_name FROM ticket_open a JOIN m_building b ON a.building_id = b.building_id GROUP BY b.building_id ORDER BY b.building_name ASC"); 
    while($hsldgd = mysql_fetch_array($gdg))      
    { 

     $gdgid = $hsldgd['building_id']; 
     $gdgname = $hsldgd['building_name']; 

      $comp = mysql_query("SELECT ifnull(count(ticket_no),0) as jcomp FROM ticket_open WHERE STATUS = 'completed' AND 
           building_id = '$gdgid' "); 
      $hslcomp = mysql_fetch_array($comp);  

      $ncomp = mysql_query("SELECT ifnull(count(ticket_no),0) as jncomp FROM ticket_open WHERE STATUS != 'completed' AND 
           building_id = '$gdgid'"); 
      $hslncomp = mysql_fetch_array($ncomp); 


     $jmlnot = $hslncomp['jncomp']; 
     $jmlcomp = $hslcomp['jcomp']; 
     $jmltick = $hslncomp['jncomp'] + $hslcomp['jcomp'] ; 


     $sheet[] = array (
       $gdgname, 
       $jmlnot, 
       $jmlcomp, 
       $jmltick 
       ); 

foreach($sheet as $row => $columns) { 
foreach($columns as $column => $data) { 
    $objWorksheet->setCellValueByColumnAndRow($column, $row + 1, $data); 
} 
} 

,如果還是不行,請在的var_dump變量$sheet

P.S正如我前面提到的,你可能想修復你的mysql查詢。