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

    [PHP Excel] - Generare e salvare su server file Excel

    Sono riuscito a generare un file Excel tramite questo script:
    lo script tramite header genera e da in download il file, io vorrei salvarlo sul server
    Codice PHP:
    <?php
    ob_start
    ();
    // ..
    function xlsBOF() {
        echo 
    pack("ssssss"0x8090x80x00x100x00x0);  
        return;
    }
    function 
    xlsEOF() {
        echo 
    pack("ss"0x0A0x00);
        return;
    }
    function 
    xlsWriteNumber($Row$Col$Value) {
        echo 
    pack("sssss"0x20314$Row$Col0x0);
        echo 
    pack("d"$Value);
        return;
    }
    function 
    xlsWriteLabel($Row$Col$Value ) {
        
    $L strlen($Value);
        echo 
    pack("ssssss"0x204$L$Row$Col0x0$L);
        echo 
    $Value;
        return;
    }
    // ..
        
    $filename "Test";
    // ..
    // Send Header
        
    header("Pragma: public");
        
    header("Expires: 0");
        
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        
    header("Content-Type: application/force-download");
        
    header("Content-Type: application/octet-stream");
        
    header("Content-Type: application/download");;
        
    header("Content-Disposition: attachment;filename=$filename.xls ");
        
    header("Content-Transfer-Encoding: binary ");
    // Open XLS
        
    xlsBOF();
    // ..
        
    xlsWriteLabel(1,0,"Scr A2");
        
    xlsWriteLabel(5,0,"Scr A6");
        
    xlsWriteNumber(5,1,"33.333");
    // ..
    // Close XLS
        
    xlsEOF();
        exit();
    // ..
    ?>
    cichity74

  2. #2

    [Risolto]

    Codice PHP:
    <?php
    // ..
    function xlsBOF() {
        
    $var pack("ssssss"0x8090x80x00x100x00x0);  
        return 
    $var;
    }
    function 
    xlsEOF() {
        
    $var pack("ss"0x0A0x00);
        return 
    $var;
    }
    function 
    xlsWriteNumber($Row$Col$Value) {
        
    $var pack("sssss"0x20314$Row$Col0x0);
        
    $var.= pack("d"$Value);
        return 
    $var;
    }
    function 
    xlsWriteLabel($Row$Col$Value ) {
        
    $L strlen($Value);
        
    $var pack("ssssss"0x204$L$Row$Col0x0$L);
        
    $var.= $Value;
        return 
    $var;
    }
    // ..
        
    $filename "Test.xls";
        
    $file_data NULL;
    // Open XLS
        
    $file_data .= xlsBOF();
    // ..
        
    $file_data .= xlsWriteLabel(1,0,"Scr A2");
        
    $file_data .= xlsWriteLabel(5,0,"Scr A6");
        
    $file_data .= xlsWriteNumber(5,1,"33.333");
    // Close XLS
        
    $file_data .= xlsEOF();
    // ..
        
    $handle fopen($filename,"a");
        
    fwrite($handle$file_data);
        
    fclose($handle);
    // ..
    ?>

  3. #3

    Salvare file excel su server con php

    Quote Originariamente inviata da cichity74 Visualizza il messaggio
    Codice PHP:
    <?php
    // ..
    function xlsBOF() {
        
    $var pack("ssssss"0x8090x80x00x100x00x0);  
        return 
    $var;
    }
    function 
    xlsEOF() {
        
    $var pack("ss"0x0A0x00);
        return 
    $var;
    }
    function 
    xlsWriteNumber($Row$Col$Value) {
        
    $var pack("sssss"0x20314$Row$Col0x0);
        
    $var.= pack("d"$Value);
        return 
    $var;
    }
    function 
    xlsWriteLabel($Row$Col$Value ) {
        
    $L strlen($Value);
        
    $var pack("ssssss"0x204$L$Row$Col0x0$L);
        
    $var.= $Value;
        return 
    $var;
    }
    // ..
        
    $filename "Test.xls";
        
    $file_data NULL;
    // Open XLS
        
    $file_data .= xlsBOF();
    // ..
        
    $file_data .= xlsWriteLabel(1,0,"Scr A2");
        
    $file_data .= xlsWriteLabel(5,0,"Scr A6");
        
    $file_data .= xlsWriteNumber(5,1,"33.333");
    // Close XLS
        
    $file_data .= xlsEOF();
    // ..
        
    $handle fopen($filename,"a");
        
    fwrite($handle$file_data);
        
    fclose($handle);
    // ..
    ?>
    Lo script funziona perfettamente, ma è possibile salvare automaticamente su server un file excel generato con il seguente codice ?.....

    <?
    $filename="sheet.xls";
    header ("Content-Type: application/vnd.ms-excel");
    header ("Content-Disposition: inline; filename=$filename");
    ?>

    // codice html e php


    ...... ?

  4. #4
    c'è nessuno che può aiutarmi?

  5. #5
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    queste istruzioni
    Codice PHP:
    header ("Content-Type: application/vnd.ms-excel");
    header ("Content-Disposition: inline; filename=$filename"); 
    non fanno altro se non dire al programma di generare un output verso un browser informandolo che il contenuto sarà un file di tipo Excel

    il codice che segue queste istruzioni, che tu ometti, dovrebbe essere quello che genera lo stream verso il browser: nel secondo codice che hai postato e che dici che funziona correttamente, puoi notare che $file_data è la concatenazione del risultato di vari passaggi e che l'output è la scrittura del file sul server
    Codice PHP:
    $handle fopen($filename,"a");
    fwrite($handle, $
    fclose($handle); 

    in definitiva: fai in modo che il tuo codice che inizia con la dichiarazione degli header generi un output che possa essere "conservato" in una variabile e a fine elaborazione scrivi questa variabile in un file. Se non serve restituire il file al browser, elimina del tutto la parte relativa agli header




  6. #6
    Dopo mille tentativi sono arrivato anche io a questa soluzione, però il codice che segue è molto lungo nel mio caso..... speravo potesse esserci una soluzione più veloce.

  7. #7
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    eh, il codice molto lungo di per se non è un problema se serve per gestire l'esigenza: diventa un problema se non è organizzato bene (ad esempio, non creare funzioni per task ripetitivi, usare oggetti, ecc)

    in teoria, potresti anche provare a scrivere l'output sul file riga per riga svuotando la variabile "contenitore" ogni volta

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.