Pregunta

Tengo una matriz multidimensional de PHP que necesito selectivamente Imprima al escritor de Excel. Tengo algo como esto:

array(2) {
  [10227]=>
  array(9) {
    ["user"]=>
    string(5) "10227"
    ["talk_time"]=>
    string(1) "8"
    ["acw"]=>
    string(1) "0"
    ["idle"]=>
    string(1) "6"
  }
  [10236]=>
  array(9) {
    ["user"]=>
    string(5) "10236"
    ["talk_time"]=>
    string(2) "10"
    ["acw"]=>
    string(1) "3"
    ["idle"]=>
    string(1) "0"
  }
}

Y en Excel necesito que se vea un poco así:

User  | talk_time  | acw  | idle
10227 | 8          | 0    | 6
10236 | 10         | 3    | 0

Creo que puedo administrar la 'escritura' para sobresalir, pero parece que no puedo hacer que el PHP escriba selectivamente el valor para cada campo donde y cómo lo quiero. He leído mucho y he probado muchas cosas, creo que la respuesta sería usar dos bucles foreach uno para la matriz 'inicial' y otra para la matriz de segunda dimensión, pero por alguna razón no puedo hacer que funcione. También he intentado usar 'extracto' pero no fue demasiado bien ... no soy un programador PHP 'entrenado'. Google ha sido mi universidad (y Stackoverflow mi facultad) y aunque no tengo demasiados problemas para trabajar con matrices ..., el mundo se pone al revés con matrices multidimensionales ...

Cualquier ayuda sería muy apreciada.

¡Gracias!

----- Editar ----- OK, no necesito la función 'Exportar a Excel', puedo manejar eso una vez que pueda asignar el valor de la matriz a una variable.

Actualmente estoy haciendo esto:

foreach ($agents as $row){
  $USER=$row["user"];
  echo "$USER\n";
  foreach($row as $col){
  $TALK_SEC=$col["talk_sec"];
  }
}

Pero todo lo que estoy recibiendo es

1023610236102361023610236102361023610236102361023610236102361023610236102361023610236102361023610236102361023610236

Cuál es mi primer agente (estoy limitando mi consulta a 1 -Limit 1-) veces 24 veces. Si agrego un eco a $TALK_SEC, Obtendría el primer número de cada uno de los tres cuatro campos que estoy preguntando alrededor de las 24 veces que el agente será 'escupir' ...

Edición final y respuesta

Pude hacer que funcionara usando una sola declaración de Foreach:

foreach ($agents as $row){
    //VAR_DUMP($row);
    $USER=$row['user'];
    $TALK=$row['talk_time'];
    $ACW=$row['acw'];
    $IDLE=$row['idle'];

Ahora todo lo que tengo que hacer es imprimir los nombres de variables ($USER, $TALK, etc ...) en la hoja de cálculo con la que ya he creado PEAR::EXCEL_WRITER. Por supuesto, debe crear un bucle para iterar sobre las diferentes $USERS que su consulta saldrá.

¿Fue útil?

Solución

Este script puede generar archivos Excel. Pero en su caso necesita formatear su matriz para poner:

User  | talk_time  | acw  | idle
10227 | 8          | 0    | 6
10236 | 10         | 3    | 0

La secuencia de comandos:

<?php

$file="demo.xls";
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=$file");
$array = array(
    array(10, 15, 20),
    array(10, 15, 20),
    array(10, 15, 20)
);
?>
<table>
<?php foreach($array as $row): ?>
    <tr>
    <?php foreach($row as $col):?>
        <td><?php echo $col ?></td>
    <?php endforeach; ?>
    </tr>
<?php endforeach; ?>
</table>

Otros consejos

Esta es solo una adición a la respuesta ya publicada aquí ... solo muestra cómo incluir los encabezados para la matriz en el archivo de Excel. Marque la publicación de la otra persona como se responde, no la mía, si esto es lo que lo hace para usted.

producción:

user    talk_time   acw      idle
10227   8           0        6
10236   10          3        0

código:

<?php
$array = 
      array (
        10227 => 
        array (
          'user' => '10227',
          'talk_time' => '8',
          'acw' => '0',
          'idle' => '6',
        ),
        10236 => 
        array (
          'user' => '10236',
          'talk_time' => '10',
          'acw' => '3',
          'idle' => '0',
        ),
      );  
$file="demo.xls";
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=$file");

$index = array_slice($array,0,1);  
$index = array_keys($index[0]);   

?>
<table> 
    <tr>
      <?php foreach($index as $heading): ?>
        <th><?php echo $heading ?></th>
      <?php endforeach; ?>
    </tr> 
    <?php foreach($array as $row): ?>
    <tr>
       <?php foreach($row as $col):?>
          <td><?php echo $col ?></td>
       <?php endforeach; ?>
   </tr>
   <?php endforeach; ?>
</table>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top