IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Enregistrer un tableau double dimension dans un Excel


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2018
    Messages : 32
    Points : 25
    Points
    25
    Par défaut Enregistrer un tableau double dimension dans un Excel
    Bonjour à tous,
    Je reviens vers vous pour une nouvelle problématique.

    Je cherche actuellement une solution pour ecrire dans un fichier excel un tableau à double dimension. L'exemple qui suis peut différer, compter plus ou moins de champs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Array
    (
        [1] => Array
            (
                [ID_CODIF] => 1
                [ID_GROUPECODIF] => 50
                [VALEUR] => Demande de démonstration
                [ORDRE] => 0
                [ETAT] => 0
                [OPTN] => 0
                [HIDEHTL] => 0
                [REGROUPER] => 0
            )
     
        [2] => Array
            (
                [ID_CODIF] => 2
                [ID_GROUPECODIF] => 50
                [VALEUR] => Demande de devis 
                [ORDRE] => 0
                [ETAT] => 0
                [OPTN] => 0
                [HIDEHTL] => 0
                [REGROUPER] => 0
            )
     
        [3] => Array
            (
                [ID_CODIF] => 3
                [ID_GROUPECODIF] => 50
                [VALEUR] => Demande entrante 
                [ORDRE] => 0
                [ETAT] => 0
                [OPTN] => 0
                [HIDEHTL] => 0
                [REGROUPER] => 0
            )
     
        [4] => Array
            (
                [ID_CODIF] => 4
                [ID_GROUPECODIF] => 50
                [VALEUR] => Appel d’offre 
                [ORDRE] => 0
                [ETAT] => 0
                [OPTN] => 0
                [HIDEHTL] => 0
                [REGROUPER] => 0
            )
    )
    Actuellement je dispose de ce code, mais je ne parviens pas à trouver comment faire, la fin de semaine on va dire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    $objPHPExcel = new PHPExcel();
    $filename = "file.xlsx";
    //Set the active Excel worksheet to sheet 0
     
    foreach ($export as $data)
    	{
    	    $objPHPExcel->getActiveSheet()->fromArray($data, NULL, 'A1');
            }
     
    header("Content-Type: application/force-download");
    header("Content-Type: application/octet-stream");
    header("Content-Type: application/download");
     
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
    // On essaye de créer le fichier.
    $objWriter->save("../../files/tmp/".$filename);
    echo json_encode("../../files/tmp/".$filename);
    La variable export, contient le tableau indiquer plus haut.
    Auriez vous une solution, ou juste quelque chose vers quoi me guider pour avancer ?

    Cordialement

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Bonjour,
    C'est fait à l'arrach

    Je part du principe que votre tableau peux avoir des champs plus ou moins, mais que chaque fois qu'on génère un fichier Excel, la tableau à les même champs. ou du moins le premier tableau doit servir de patron

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
    <?php
    include 'vendor/autoload.php';
     
     
    use PhpOffice\PhpSpreadsheet\Spreadsheet;
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
     
    $tableau[0]=['ID_CODIF' => 1,
                'ID_GROUPECODIF' => 50,
                'VALEUR' => 'Demande de démonstration',
                'ORDRE' => 0,
                'ETAT' => 0,
                'OPTN' => 0,
                'HIDEHTL' => 0,
                'REGROUPER' => 0
    ];
    $tableau[1] = [
        'ID_CODIF' => 2,
        'ID_GROUPECODIF' => 50,
        'VALEUR' => 'Demande de devis',
        'ORDRE' => 1,
        'ETAT' => 0,
        'OPTN' => 0,
        'HIDEHTL' => 0,
        'REGROUPER' => 0
    ];
    $tableau[2] = [
        'ID_CODIF' => 3,
        'ID_GROUPECODIF' => 50,
        'VALEUR' => 'Demande entrante',
        'ORDRE' => 2,
        'ETAT' => 0,
        'OPTN' => 0,
        'HIDEHTL' => 0,
        'REGROUPER' => 0
    ];
    $tableau[3] = [
        'ID_CODIF' => 4,
        'ID_GROUPECODIF' => 50,
        'VALEUR' => 'appel d\'offre',
        'ORDRE' => 3,
        'ETAT' => 0,
        'OPTN' => 0,
        'HIDEHTL' => 0,
        'REGROUPER' => 0
    ];
     
    $filename = "file.xlsx";
    $spreadsheet = new Spreadsheet();
    $sheet = $spreadsheet->getActiveSheet();
     
    /**
     * On crée les entêtes
     */
    $t = current($tableau);
    $i=1;
    foreach ($t as $key => $value) {
        $sheet->setCellValueByColumnAndRow($i, 1, $key);
       $i++;
    }
    /**
     * On crée les données
     */
    $i = 2;
    foreach ($tableau as $value) {
        $j = 1;
        foreach ($value as $v) {
            $sheet->setCellValueByColumnAndRow($j, $i, $v);
            $j++;
        }
        $i++;
    }
     
    $writer = new Xlsx($spreadsheet);
    /**
    * Envoie le fichier dans le navigateur
    */
     
    $header = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
     
    header('Content-type:' . $header);
    header('Content-Disposition:inline;filename=' . $filename);
    $writer->save('php://output');

Discussions similaires

  1. Mettre un tableau à double dimension en session
    Par The Molo dans le forum ASP
    Réponses: 4
    Dernier message: 20/02/2008, 14h54
  2. Afficher un tableau à double dimension
    Par The Molo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/02/2008, 12h37
  3. Passage de tableau à deux dimensions dans une session
    Par keumlebarbare dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 28/11/2006, 18h42
  4. afficher un tableau 2 dimensions dans une fenetre
    Par igor24 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 29/04/2006, 13h50
  5. [FLASH MX] Tableau à double dimension
    Par totoche dans le forum Flash
    Réponses: 4
    Dernier message: 11/10/2005, 22h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo