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

    Problemi generazione file con Spreadsheet_Excel_Writer()

    Ciao a tutti!
    Ho un problema enorme...

    Diamo un po' di info:
    S.O: Mac OS X 10.3.9
    D.B: MySQL
    PHP: v. 5.0.3
    Browser: Safari

    Problema: Ho un database con una lista di record. Per ogn'uno di questi devo generare un file excel diverso contenente i vari campi del record... E fino a qui non c'è problema.

    Quando cerco di generare i file distinti con $worksheet->send($nomeFile) invece di generare il numero di file corrispondente al numero di record, me ne genera uno unico la cui dimensione è la somma delle dimensioni di tutti gli altri file: esempio: 1 file (corretto) 8K -> file generato 80K;

    Premetto che il tutto si svolge all'interno di un ciclo while che si interrompe quando mysql_fetch_assoc($arg), restituisce false, ovvero quando non ci sono più righe...

    Se per caso poi avrei un'altro problema.
    Ho provato pure a creare il file direttamente dal costruttore ovvero:
    ... new Spreadsheet_Excel_Writer($nomeFile), ma invece di creare il file mi genera una pagina HTML che contiene il codice inviato dal writer....

    Qualcuno sa come aiutarmi???
    Per piacere.... sto impazzendo....

  2. #2
    hai omesso di dire che stai usando un'apposita classe per generare il file excel

    comunque posta un po di codice

  3. #3
    Allora, questa è la funzione dedicata alla generazione del file vero e proprio:

    function scriviFile($riga_RSCliente, $query_RSDistr)
    {
    $row_RSCliente = $riga_RSCliente;
    $Distr = $query_RSDistr;
    $RSDistr = mysql_fetch_assoc($Distr);

    $_SESSION['id'] = $row_RSCliente['id'];
    $_SESSION['Zona'] = $row_RSCliente['Zona'];
    $_SESSION['NomeCliente'] = $row_RSCliente['Nome'];

    $colname_RSZona = "1";
    if (isset($_SESSION['Zona']))
    {
    $colname_RSZona = (get_magic_quotes_gpc()) ? $_SESSION['Zona'] : addslashes($_SESSION['Zona']);
    }

    $cliente = $_SESSION['NomeCliente'];
    $nomefile = $cliente . ".xls";

    require_once('Spreadsheet/Writer.php');

    // We give the path to our file here
    $workbook = new Spreadsheet_Excel_Writer();

    // sending HTTP headers
    $workbook->send($nomefile);
    ... -> Scrittura dati sul $workbook;
    $workbook->close();
    }

    La quale viene richiamata da qui...

    ...
    $contClienti = 0;
    while($contClienti < $totalRows_RSCliente)
    {
    $row_RSCliente = mysql_fetch_assoc($RSCliente);

    $query = "SELECT * FROM TipoDistributore, Distributore WHERE Distributore.id = " . $row_RSCliente['id'] . " AND Distributore.Tipo = TipoDistributore.id";
    $Distr = mysql_query($query, $ConnDatabase) or die(mysql_error());

    $contClienti++;
    scriviFile($row_RSCliente, $Distr);
    }
    ...

    Ho pensato che alla fine della funzione scriviFile devo usare qualcosa per interrompere la trasmissione di ogni file... Anche perchè in questo modo è come se scaricassi dei file...

  4. #4
    allora il problema è che tu spedisci il file al browser e di conseguenza non funziona nulla ^^

    tu mica puoi spedire 8 file diversi ... ne puoi spedire uno solo

    al max prepara uno zip e spedisci quello

  5. #5
    Infatti io volevo mandare 8 file diversi... Calcola che il programma funziona in locale.... E se dovessi fare uno zip come faccio a tenermi il file senza usare la send()?

  6. #6

  7. #7
    non conosco la classe ma sono arci-sicuro che la classe supporta la scrittura del file su disco

    li scrivi su disco e poi con una classe che comprime in zip (se vai su phpclasses ne trovi parecchie) comprimi il tutto e invii il file e fatto questo elimini i dati dal disco ^^

  8. #8
    Infatti era quello che avevo pensato di fare...
    Ma come ho detto nel primo th, se provo ad usare il costruttore new Spreadsheet_Excel_Writer($Nomefile), questo non mi crea un file, ma mi fa vedere in una nuova pagina quello che avrebbe dovuto inviare al file... :-( ...

  9. #9

  10. #10
    Ho risolto il problema...
    Con il costruttore della classe = new Spreadsheet_Excel_Wtiter($NomeFile) funziona tutto come dovrebbe... QUello che mi ero dimenticato di fare era di cambiare la cartella di destinazione dei file, (quindi io cercavo di scrivere in una cartella protetta...), quindi invece di dare solo il $nomeFile ho aggiunto la cartella di destinazione... Ed ora tutto ok... Grazie mille per il vostro aiuto.....





    ciao ciao

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.