为什么每列中的单元格数据都重复?

时间:2013-12-30 07:08:29

标签: phpexcel

我是PHPExcel的新手,不知怎的,我使用以下代码在Excel电子表格中获得了相同的数据:

<?php
  $roster_sql = "SELECT * FROM EMPLOYEE";
  $roster_result = mysql_query($roster_sql) or die(mysql_error());

  // Populate 2D Array
  $kcount = 0;
  while($sheet_array = mysql_fetch_array($roster_result))
  {
    $sheet[$kcount] = $sheet_array;
    $kcount++;
  }
  $rowID = 1;
  foreach($sheet as $rowArray)
  {
    $columnID = 'A';
    foreach($rowArray as $columnValue)
    {
      $objPHPExcel->getActiveSheet()->setCellValue($columnID.$rowID, $columnValue);
      $columnID++;
    }
    $rowID++;
  }
?>

生成的电子表格在列中复制了每个单元格值。我是否错误地填充了数组或者在写出数组时出了什么问题?

此外,如何在不对SQL中的列名进行硬编码的情况下在同一电子表格中编写标题行?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

mysql_fetch_array()的默认行为是返回一个数组,其中包含每列的枚举 关联值。即$ result_type参数是MYSQL_BOTH。

如果您只想要一个关联的一个枚举结果(但不是两者),那么您需要指定它,例如。

while($sheet_array = mysql_fetch_array($roster_result, MYSQL_ASSOC))

while($sheet_array = mysql_fetch_array($roster_result, MYSQL_NUM))

或使用其中一个相关功能,例如

while($sheet_array = mysql_fetch_assoc($roster_result))

while($sheet_array = mysql_fetch_row($roster_result))

修改

如果要将列名称写为标题,则需要调用mysql_list_fields()之类的内容来获取表的列列表

或者,将数据作为关联数组检索,然后键值将是您的列名