Ouvrir un fichier excel dans controller.php zend framework

Bonjour,

jecherche comment ouvrir un fichier excel dans un controller.php en zend framework le fichier s'ouvre mais dedans ya que le path de fichier excel

le message d'erreur

####################"
voila source controller .php

/*****afficher les EXCEL ************/
public function excelAction(){
$idxls = $this->getRequest ()->getParam('id');
echo $idxls;
$ct = new Application_Model_DbTable();
$xls = $ct->find($idxls)->current();
$xls2= $xls->name;
$xls3= $xls->size;
echo $xls2;
$xlsPath = realpath(APPLICATION_PATH . '/../public/excelshift').'/'.$xls2;
echo $xlsPath;

$this->getResponse()->setRawHeader( 'Content-Type: application/msexcel; charset=UTF-8' )
->setRawHeader( 'Content-Disposition: inline; filename = '$xls2' ' )
->setRawHeader( 'Content-Transfer-Encoding: binary' )
->setRawHeader( 'Expires: 0' )
->setRawHeader( ('Cache-Control: must-revalidate') )
->setRawHeader( 'Pragma: public' )
->setRawHeader( 'Content-Length: . ' $xls3' )
->sendResponse();

readfile( $xlsPath );
exit();

merci a vous en avance

cdt

3 réponses

  1. rebonjour mpmp93

    sa na pas marché voila le code que jai mis ,jai essayer aussi avec load zend file la meme chose ,avec l'ancien code le fichier excel se charge mais il sort vide

    $idxls = $this->getRequest ()->getParam('id');
    //echo $idxls;
    $ct = new Application_Model_DbTable_Shift();
    $xls = $ct->find($idxls)->current();
    $xls2= $xls->name;
    $xls3= $xls->size;
    $xls4= $xls->created;
    // echo $xls2;
    $xlsPath = realpath(APPLICATION_PATH . 'C:\Program Files\EasyPHP-12.1\www\mourad\public\excelshift') .$xls2;
    echo $xlsPath;

    /*$this->_helper->layout->disableLayout();
    $this->_helper->viewRenderer->setNoRender();
    $this->getResponse()->setRawHeader( "Content-type: application/vnd.ms-excel")
    ->setRawHeader( "Content-Disposition: attachment; filename =\"$xls2\" " )
    //->setRawheader("Cache-Control: max-age=0");
    ->setRawHeader( "Content-Transfer-Encoding: binary" )
    ->setRawHeader( "Expires: 0" )
    // ->setRawHeader("Content-Type: application/" . $mimeType)
    ->setRawheader("Content-Type: application/force-download")
    ->setRawheader("Content-Type: application/download")
    ->setRawHeader( "Cache-Control: must-revalidate, post-check=0, pre-check=0" )
    ->setRawHeader( "Pragma: public" )
    ->setRawHeader( "Accept-Ranges: bytes" )
    ->setRawHeader( "Content: " .$xls3 )
    ->sendResponse();
    $xls5 = Zend_Loader::loadFile($pdfPath);

    echo $xls5->render();*
    1. Désolé. Mais si je suis pas devant la machine, je sèche....
    2. rebonsoir

      merci comme meme , si vous avez le temp ,je cherche toujours a régler ce pb

      merci
  2. rebonjour

    sa na pas marché

    :(
    1. Ce qu'il faut faire:
      - vérifier que le chemin d'accès au fichier est le bon avec un echo du chemin du fichier et nom de fichier
      - faire un file_get_contents sur ce chemin+fichier
      - faire un echo du contenu ou ceci:

      - dans la partie controller -> action:

      // partie code envoi un fichier excell
                      $fichier = ....ici chemin et nom du fichier....;
      echo $fichier; die;  // pour vérif chemin nom, enlever cette ligne après vérif
      
                      // inhibition layout
                      $this->_helper->layout()->disableLayout(); 
                      $this->_helper->viewRenderer->setNoRender(true);
      
                      // génération en-tête et transmission document
                      header(''Content-Type: application/msexcel; charset=UTF-8');
                      header('Location: '.$fichier);


      A+
  3. Bonjour,

    A mon avis, quelque part par là:
    ....
    readfile( $xlsPath );

    je remplacerai par un

    $contenuFichier = file_get_contents(....);
    echo $contenuFichier;

    A+