Question

J'ai un tableau multidimensionnel PHP dont j'ai besoin sélectivement Imprimez à Excel écrivain. J'ai quelque chose comme ça:

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"
  }
}

Et dans Excel, j'en ai besoin pour ressembler un peu à ceci:

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

Je pense que je peux gérer «l'écriture» pour exceller, mais je n'arrive pas à obtenir le PHP pour écrire sélectivement la valeur pour chaque champ où et comment je le veux. J'ai beaucoup lu et j'ai essayé beaucoup de choses, je pense que la réponse serait d'utiliser deux boucles Forach pour le tableau «initial» et une autre pour le deuxième tableau de dimension, mais pour une raison quelconque, je ne peux pas le faire fonctionner. J'ai également essayé d'utiliser «l'extrait» mais ça ne s'est pas trop bien passé ... Je ne suis pas un programmeur PHP «formé». Google a été mon université (et Stackoverflow ma faculté) et bien que je n'aie pas trop de mal à travailler avec les tableaux ..., le monde augmente avec des tableaux multidimensionnels ...

Toute aide serait grandement appréciée.

Merci!

----- Modifier ----- OK, je n'ai pas besoin de la fonctionnalité «Exporter vers Excel», je peux gérer cela une fois que je peux attribuer la valeur du tableau à une variable.

Je fais actuellement ceci:

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

Mais tout ce que je reçois c'est

1023610236102361023610236102361023610236102361023610236102361023610236102361023610236102361023610236102361023610236

qui est mon premier agent (je limite ma requête à 1-limite 1-) fois 24 fois. Si j'ajoute un écho à $TALK_SEC, J'obtiendrais le premier numéro de chacun des trois quatre champs que je demande à peu près les temps que l'agent 24 fois sur l'agent sera «craché» ...

Modification finale et réponse

J'ai pu le faire fonctionner en utilisant en fait une seule déclaration FOREEAC:

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

Maintenant, tout ce que j'ai à faire est d'imprimer les noms de variables ($USER, $TALK, etc ...) Dans la feuille de calcul avec laquelle j'ai déjà créé PEAR::EXCEL_WRITER. Bien sûr, vous devez créer une boucle pour itérer sur les différents $USERS que votre requête sortira.

Était-ce utile?

La solution

Ce script peut générer un fichier Excel. Mais dans votre cas, vous avez besoin de formater votre tableau pour mettre:

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

Le scénario:

<?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>

Autres conseils

Ce n'est qu'un ajout à la réponse déjà publiée ici ... Cela montre simplement comment inclure les en-têtes du tableau dans le fichier Excel. Marquez le message de l'autre personne comme répondu, pas le mien, si c'est ce qui vous fait pour vous.

production:

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

code:

<?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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top