Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Generare da PHP un file stampabile in word o excel CON IMMAGINI.

    Salve a tutti, ho un archivio mysql con vari campi ed un nome di file che uploado in fase di inserimento dati in tabella.
    Online stampo il contenuto della tabella richiamando nella cartella di upload il rispettivo file attraverso il suo nome che ho in tabella.
    Ora vorrei creare una lista brutale dei dati in excel o word e vorrei includere anche la foto.
    Il listato seguente produce un file word ma al posto dell'immagine mi da "Impossibile visualizzare l'immagine collegata".
    Ho provato anche con excel inutilmente.
    Un GRAZIE a chi mi indica la strada.
    <?php
    $filename="prova.doc";
    header ("Content-type: Application/octet-stream");
    header ("Content-Disposition: inline; filename=$filename");
    ?>
    <html>
    <body>
    <?php
    include 'param_conn.php';
    $conn = mysql_connect($host,$username,$password) or die('Connect fallita: ' . mysql_error());
    mysql_select_db($database,$conn) or die('Select DB fallita: ' . mysql_error());


    $query = "SELECT * FROM iscrizioni order by 1";
    $rs = mysql_query( $query, $conn );
    if(! $rs){die('Query fallita: ' . mysql_error());}


    echo "<table>";
    while ($riga= mysql_fetch_array($rs,MYSQL_BOTH))
    {
    echo "<tr><td>$riga[0]</td>";
    echo "<td>$riga[1]</td>";
    echo "<td>$riga[2]</td>";
    echo "<td>$riga[3]</td>";
    echo "<td>$riga[4]</td>";
    echo "<td>$riga[5]</td>";
    echo "<td>$riga[6]</td>";
    echo "<td>$riga[7]</td>";
    echo "<td>$riga[8]</td>";
    echo "<td>$riga[9]</td></tr>"; //questo è il campo che contiene il nome del file della cartella di upload.


    echo "<td><IMG SRC=\"upload/$riga[9]\" height=\"150\" ></td></tr>"; //Ovviamente non funziona.
    }
    echo "</table>";
    mysql_close($conn);
    ?>
    </table>
    </body></html>

  2. #2
    La butto lì anche perché non ho mai creato un file di WORD tramite PHP in questo modo... Forse devi includere il percorso assoluto dell'immagine e non quello relativo. Però scrivi "Ovviamente non funziona." quindi dovresti essere già consapevole di questo fatto...

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Solo per il fatto che chiami il file prova.doc non vuol dire che sia in formato Word, che io sappia per manipolare file Word con PHP è necessaria una libreria apposita perché nativamente PHP non lo fa.

    Il nome della libreria (anche se ce ne saranno diverse) non me lo ricordo, ma se ne è parlato diverse volte sul forum, prova a fare una ricerca e vedi se la trovi.

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    In realtà word è capace di renderizzare l'html. Se rinomini un file html in doc, word lo visualizza (non so quanto correttamente).

    Come dice Partime, dipende dal path dell'immagine. Potresti fare l'embedding dell'immagine direttamente sul documento:
    Esempio (se non ho sbagliato qualcosa)
    Codice PHP:
    $img file_get_contents('upload/'.$riga[9]);
    ...

    echo 
    '<img src="data:image/jpg;base64,'.base64_encode($img).'" />'
    Ultima modifica di boots; 18-04-2014 a 10:55

  5. #5
    partime, purtroppo non funziona, ma ora ci guardo meglio.
    Ok Alhazred, il tipo di file lo fa la formattazione e non l'estensione, lo so. La libreria sarebbe la PHPword e c'è anche la PHPexcel, free, ma ho letto anche che non fanno inserire immagini.
    boots, ora provo anche la tua soluzione............

  6. #6
    partime, ho provato anche con la barra prima di upload, che è il nome della cartella, ma nulla.
    boots, ho inserito il tuo codice ma mi da Parse error: syntax error, unexpected ''upload/'' (T_CONSTANT_ENCAPSED_STRING) in C:\wamp\www\asdcaeretrekkingMOD\word.php on line 35.


  7. #7
    Leggendo in rete ho capito che bisogna codificare in base64 il file e poi scriverlo nella cella della tabella, ho provato ma il file diventa un insieme di caratteri incomprensibili. Qualcuno ha altre idee?

  8. #8
    E' un modo molto, ma molto, sporco, creare una tabella in html e poi salvarla mettendo al file estensione xls. E' una porcata immonda, ma dato che excel si adatta senza lamentarsi a visualizzare il tutto nelle celle, potresti avere l'illusione di aver raggiunto lo scopo.
    A me è capitato di incontrare soluzioni del genere. Personalmente li avrei presi a calci nei denti perchè poi il file è, di fatto, incompatibile col mondo e se lo vuoi modificare in word o excel si fanno disastri.

    La butto là.. un file pdf ? una pagina html ben formattata per andare in stampa ? ti semplificheresti la vita... es. se devi fare un catalogo per stamparlo, pagina html ben formattata e via
    Se vuoi fare un file Excel come il signore comanda ci sono delle librerie come PHPexcel, la quale permette anche di inserire le immagini nelle celle. Trovi facilmente esempi di uso della libreria in rete.

  9. #9
    Grazie Thunderbird, la phpexcel l'avevo vista ma avevo letto che non fa inserire le immagini nelle celle. Se però mi dici che lo fa riesamino il tutto e cerco qualche esempio in rete. GRAZIE! Vi aggiorno.

  10. #10
    Nulla, solo di php non è possibile generare una tabella che contenga una immagine. Poi in excel è ancora più complicato perchè anche da Office le immagini non le riesci a mettere dentro ad una cella bensì su più celle, quelle che prende.
    Per quest'ultimo motivo mi sto indirizzando verso un file word con tabella ed immagine in una sua cella. Come dicevo prima, senza classi aggiuntive non si può fare, quindi sto provando la phpword. Sto testando gli esempi, ce n'è uno di generazione file con immagini ed un altro con generazione file con tabella contenente dati. ORA VEDO SE RIESCO A FARNE DI DUE UNO ED AVREI RISOLTO. Qualcuno ci ha già provato? Consigli? Comunque grazie.

Tag per questa discussione

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.