2017-04-25 46 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查询。