Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [PHP]Compatibilità file.xls generato da script

    Salve a tutti,
    mi trovo davanti ad un piccolo ostacolo.
    Ho creato uno script che, lanciato da console, genera un output di dati provenienti da mySQL e li salvo, con i comandi fopen fwrite ecc, in un file.xls locale per un sistema di report che viene effettuato giornalmente in automatico.

    Tutto bello, il file viene generato correttamente, ma all'apertura del file mi appare un avviso che il formato del file (anche se .xls) è diverso da quello specificato nell'estenzione.
    Si puo anche scegliere di proseguire, ma questo messaggio è alquanto rognoso.

    Questa notifica però viene segnalata solo da Office 2007, mentre con il 2003 viene aperto normalmente.

    Detto ciò, ho provato a cercare sia nel forum che su google una soluzione e mi sono ritrovato a provare alcune classi su phpclasses.org ed anche quella di PEAR.

    I problemi sono:
    1. Alcuni devono essere obbligatoriamente lanciati tramite browser (per gli header).
    2. Altri da riga di comando funzionano correttamente, ma tentando di aprire il file si verifica lo stesso identico problema riportato sopra.

    Esiste dunque un maledettissimo modo per eliminare questo benedetto avviso?
    La via del CSV è da escludere, in quanto mi è stato richiesto espressamente in formato xls.

    Vi ringrazio in anticipo per l'aiuto.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    ma a parte il nome e l'estensione, il formato reale del file qual è? Non è che per caso è un csv denominato xls? Se invece è davvero un xls, come lo generi (se non viene riconosciuto probabillmente il formato non è del tutto corretto)?

  3. #3
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    l'excel fino alla versione 11 (cioe quello che tu chiami office 2003) usava il biff come formato primario. I vari tool php scrivono appunto in biff5, o quelli piu' avanzati anche in biff8.
    Dalla versione 12 (office 2007) excel usa open xml come formato. Ovviamente, essendo pure piu' facile, ci sono classi php che scrivono in questo formato. Ma se crei dei file cosi, rinunci alla retrocompatibilita' (probabilmente le versioni vecchie di ms office non riusciranno ad aprirli).

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    se dunque stai usando delle classi che generano il formato "corretto" allora è un problema di queste classi... probabilmente gli header del file non sono del tutto esatti e magari le versioni più vecchie di O. non danno problemi, ma l'utima vuole qualcosa di più preciso... non ho ben capito se superando l'avviso rognoso il file è aperto correttamente... se sì, allora in che formato viene visto da O.?

  5. #5
    Incollo la parte che effettua la scrittura.
    Ora utilizzo il formato HTML per la scrittura. Prima sinceramente non ricordo come lo formattavo ma l'errore era lo stesso

    //RIGHE CONNESSIONE AL DB

    $nomefile = "Report" . $date . ".xls";
    $file = fopen($nomefile, "w");

    //TABLE HEADS
    $value .= '<table border="1">';
    $value .= '<tr>';
    $value .= '<th width="80">COL1</th>';
    $value .= '<th width="111">COL2</th>';
    $value .= '<th width="45">COL3</th>';
    $value .= '<th width="80">COL4</th>';
    $value .= '<th width="70">COL5</th>';
    $value .= '<th width="50">COL6</th>';
    $value .= '<th width="130">COL7</th>';
    $value .= '<th width="55">COL8</th>';
    $value .= '</tr>';

    //TABLE ROWS
    $i=1;
    while ($row = mysql_fetch_array($result))
    {
    $value .= '<tr>';
    $value .= '<td>'.$row[DATO1].'</td>';
    $value .= '<td>'.$row[DATO2].'</td>';
    $value .= '<td>'.$row[DATO3].'</td>';
    $value .= '<td>'.$row[DATO4].'</td>';
    $value .= '<td>'.$row[DATO5].'</td>';
    $value .= '<td>'.$row[DATO6].'</td>';
    $value .= '<td>'.$row[DATO7].'</td>';
    $value .= '<td>'.$row[DATO8].'</td>';
    $value .= '</tr>';
    }
    $i ++;
    $value .= '</table>';
    fwrite($file, $value);
    fclose($file);
    Questo è quello che attualmente ho usato io senza utilizzare classi o librerie trovate in giro che cmq mi danno lo stesso problema.

    Il file lo nomino io manualmente (come sa codice).
    Excel dopo l'avviso apre il file ed è correttamente visualizzato, non da nessun tipo di errore di formattazione o di impaginazione, è perfetto.

    Ho provato anche Spreadsheet_Excel_Writer ma da console non salva il file, devo obbligatoriamente avviarlo dal browser (cosa inutile per me che dovrò utilizzarlo come operazione pianificata giornaliera).

  6. #6
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    ah, quindi lo scrivi in html
    quello che ho detto prima sui biff dovrebbe valere anche per i vecchi ms office xml formats. Dalla versione 2007 loro usano l'open xml.

  7. #7
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    e per la cronaca - nel tuo file mancano le definizioni delle schemas
    prima di <table> dovresti avere definizioni xmlns e doctype. Fai un export in excel 2000 da phpmyadmin, e aprilo come testo e guarda li dentro..

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    in effetti il formato non è corretto... dovresti salvarlo con le intestazioni complete, anche perchè così in realtà non è in "xls" (vedi http://iesdp.gibberlings3.net/ieformats/bif_v1.htm)

  9. #9
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Originariamente inviato da eiyen
    in effetti il formato non è corretto... dovresti salvarlo con le intestazioni complete, anche perchè così in realtà non è in "xls" (vedi http://iesdp.gibberlings3.net/ieformats/bif_v1.htm)
    no, avevo dato per scontato io che lui usasse il biff, ma in realta' lui usa questo: http://en.wikipedia.org/wiki/Microso...ce_XML_formats
    resta il fatto che nel file mancano delle cose, e che comunque non possiamo essere sicuri che qualsiasi cosa generata in un vecchio formatto non provochi un warning sul 2007 che e' passato al open xml

  10. #10
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    sirmanga, se per te la retrocompatibilita' non e' un problema, dai un occhiata a questo: http://www.codeplex.com/PHPExcel

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 © 2024 vBulletin Solutions, Inc. All rights reserved.