Partage
  • Partager sur Facebook
  • Partager sur Twitter

Message Erreur ZipArchive::close()

need help

Sujet résolu
    17 juillet 2019 à 16:21:39

    Bonjour, 

    Voilà mon problème est que je cherche à exporter des données de ma BDD en format excel pour cela j'utilise la librairie "mk-j PHP_XLSXWriter" lorsque j'exporte la première fois ça fonctionne nickel mais si je décide de réexporter j'ai ce message d'erreur qui s'affiche Warning: ZipArchive::close(): Renaming temporary file failed: Invalid argument in ... on line 103 

    Et je n'arrive pas à résoudre le problème n'y même à comprendre :) Help me please !

    Voici le bout de code librairie :

    public function writeToFile($filename)
    	{
    		foreach($this->sheets as $sheet_name => $sheet) {
    			self::finalizeSheet($sheet_name);//making sure all footers have been written
    		}
    		if ( file_exists( $filename ) ) {
    			if ( is_writable( $filename ) ) {
    				@unlink( $filename ); //if the zip already exists, remove it
    			} else {
    				self::log( "Error in " . __CLASS__ . "::" . __FUNCTION__ . ", file is not writeable." );
    				return;
    			}
    		}
    		$zip = new ZipArchive();
    		if (empty($this->sheets))                       { self::log("Error in ".__CLASS__."::".__FUNCTION__.", no worksheets defined."); return; }
    		if (!$zip->open($filename, ZipArchive::CREATE)) { self::log("Error in ".__CLASS__."::".__FUNCTION__.", unable to create zip."); return; }
    		$zip->addEmptyDir("docProps/");
    		$zip->addFromString("docProps/app.xml" , self::buildAppXML() );
    		$zip->addFromString("docProps/core.xml", self::buildCoreXML());
    		$zip->addEmptyDir("_rels/");
    		$zip->addFromString("_rels/.rels", self::buildRelationshipsXML());
    		$zip->addEmptyDir("xl/worksheets/");
    		foreach($this->sheets as $sheet) {
    			$zip->addFile($sheet->filename, "xl/worksheets/".$sheet->xmlname );
    		}
    		$zip->addFromString("xl/workbook.xml"         , self::buildWorkbookXML() );
    		$zip->addFile($this->writeStylesXML(), "xl/styles.xml" );  //$zip->addFromString("xl/styles.xml"           , self::buildStylesXML() );
    		$zip->addFromString("[Content_Types].xml"     , self::buildContentTypesXML() );
    		$zip->addEmptyDir("xl/_rels/");
    		$zip->addFromString("xl/_rels/workbook.xml.rels", self::buildWorkbookRelsXML() );
    		var_dump($zip);
    		$zip->close(); //LIGNE 103 DANS MON CODE
    	}

    Et voici le mien, creation Excel :

    elseif (isset($_POST['exporter']))
    {
      set_include_path( get_include_path().PATH_SEPARATOR."..");
      /*require_once 'functions/excel.php';
      activeErrorReporting();
      noCli();*/
      include_once("classes/xlsxwriter.class.php");
      
      $header = array(
        'ID'=>'integer',
        'id_service'=>'integer',
        'field'=>'string',
        'content'=>'string',
      );
    
      $sql = $bdd->prepare("SELECT * FROM parametre p INNER JOIN service s ON (p.service_id = s.id) AND s.id = :id");
      $sql->bindValue(':id', $_GET['id']);
      $sql->execute();
    
      $rows = $sql->fetchAll(PDO::FETCH_ASSOC);
    
      $writer = new XLSXWriter();
      $writer->writeSheetHeader('Page1', $header);
      foreach($rows as $row){
        $writer->writeSheetRow('Page1', $row);
      }
      //$writer->writeSheet($rows,'Sheet1', $header);//or write the whole sheet in 1 call
      $writer->writeToFile('xlsx-simple.xlsx');
      //$writer->writeToStdOut();
      //echo $writer->writeToString();
    }

    Voila tout en attente d'une âme charitable ;)

    • Partager sur Facebook
    • Partager sur Twitter
      17 juillet 2019 à 17:17:07

      Salut !

      Les fonctions addFromString() et addEmptyDir() renvoient true ou false, true quand c'est ok et false quand une erreur survient. Essayes de les tester avant le close, sinon ça va te mettre en erreur.

      Crédits : John Factorial sur php.net ( https://www.php.net/manual/fr/ziparchive.close.php#101606 )

      • Partager sur Facebook
      • Partager sur Twitter

      L'erreur dans un code se situe très souvent entre le clavier et la chaise. =D

        18 juillet 2019 à 9:41:05

        J'ai testé mais ça a rien changé mais j'ai compris le message d'erreur le problème apparaît seulement lorsque le fichier Excel est ouvert et que j'essaye de réexporter, c'est une erreur à la con et comme je travail en double écrans j'avais pas passé à fermé le fichier Excel my bad mais merci d'avoir répondu rapidement :)

        • Partager sur Facebook
        • Partager sur Twitter

        Message Erreur ZipArchive::close()

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown