Visualizzazione dei risultati da 1 a 10 su 10

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Per avere scritto un generatore di file Excel .xlsx ti posso dire che non è affatto un problema php.
    Siccome sono file xml ti tocca unzipare il file odt dopo modifica e poi aprire ogni xml con il browser per vedere dove sta l’errore.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  2. #2
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Per avere scritto un generatore di file Excel .xlsx ti posso dire che non è affatto un problema php.
    Siccome sono file xml ti tocca unzipare il file odt dopo modifica e poi aprire ogni xml con il browser per vedere dove sta l’errore.
    Ho "unzippato" il nuovo file odt, e al suo interno manca la cartella "Configurations2" e il file "mimetype"

    questo di seguito è il codice con cui genero il file odt definitivo

    Codice PHP:
    <?php

    $nuovoFileOdt 
    "nuovoOdt.odt";

    $rootPath realpath('dirtmp');

    $zip = new ZipArchive();
        
    $zip->open("$nuovoFileOdt"ZipArchive::CREATE ZipArchive::OVERWRITE);

    $files = new RecursiveIteratorIterator(
        new 
    recursiveDirectoryIterator($rootPath),
        
    RecursiveIteratorIterator::LEAVES_ONLY
    );

    foreach (
    $files as $name => $file) {

        if (!
    $file->isDir())  {
            
    $filePath $file->getRealPath();
            
    $relativePath substr($filePathstrlen($rootPath) + 1);
            
    $zip->addFile($filePath$relativePath);
        }
    }

    $zip->close();
    ?>
    sicuramente è sbagliata la parte qui sopra (che zippa appunto il file odt)

    come posso correggere?
    Ultima modifica di aquatimer2000; 31-05-2018 a 21:51
    aquatimer2000

  3. #3
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Per avere scritto un generatore di file Excel .xlsx ti posso dire che non è affatto un problema php.
    Siccome sono file xml ti tocca unzipare il file odt dopo modifica e poi aprire ogni xml con il browser per vedere dove sta l’errore.
    questo è il codice del mio file php che unzippa e zippa, il contenuto del file odt, e mi genera il file odt definitivo (ho controllato i file xml) sembra lo stesso.

    lo puoi testare con un tuo file odt ?!

    Codice PHP:
    <?php
    $zip 
    = new ZipArchive;
    $res $zip->open('test.odt');

    if (
    $res === TRUE) {

        
    $zip->extractTo('dir_dove_scompatto');

        
    //$source = file_get_contents('dirtmp/content.xml');
        //$source = str_replace('@nome@', 'nome e cognome', $source);
        //file_put_contents('dirtmp/content.xml', $source);

        /* queste 3 righe sopra, sono quelle con cui faccio il replace.. ma ho fatto dei test anche semplicemente unzippando e zippando, senza modificare content.xml */

        
    $zip->close();

        
    $rootPath realpath('dir_dove_scompatto');

        
    $zip = new ZipArchive();
        
        
    $zip->open('nuovoOdt.odt'ZipArchive::CREATE ZipArchive::OVERWRITE);

        
    $files = new RecursiveIteratorIterator(
            new 
    RecursiveDirectoryIterator($rootPath), RecursiveIteratorIterator::SELF_FIRST);

        foreach (
    $files as $file) {

            if( 
    in_array(substr($filestrrpos($file'/')+1), array('.''..')) )
            continue;

            
    $filePath $file->getRealPath();
            
            
    $relativePath substr($filePathstrlen($rootPath) + 1);

            if ( 
    $relativePath != "" ) {                
                if (
    is_dir($file) === true) {
                    
    $zip->addEmptyDir(str_replace($source '/'''$relativePath '/'));
                }
                else if (
    is_file($file) === true) {
                    
    $zip->addFromString(str_replace($source '/'''$relativePath), file_get_contents($file));
                }
            }
        }
        
    $zip->close();
    }
    else {
        echo 
    'doh!';
    }
    ?>
    aquatimer2000

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.