Generare file excel da php

Questo script trovato in rete mi permette di generare un file excel dei dati che passo con php, fin qui tutto ok, il mio problema è il seguente:

1- quando genera il file mi viene inserita 1 riga vuota prima delle etichette e due dopo, come faccio per evitarlo ? non è molto importate, ma se si può fare è ancora meglio;

2- apro il link in una popup, quello che vorrei e che al termine della conversione si chiuda la popup. Ho provato a mettere window.close() ma niente da fare, ancora meglio se la popup non viene aperta mi compaia direttamente la richiesta di salvataggio file.

function xlsBOF() {

      echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);

      return;

   }

  

   function xlsEOF() {

      echo pack("ss", 0x0A, 0x00);

      return;

   }

   function xlsWriteLabel($Row, $Col, $Value ) {

      $L = strlen($Value);

      echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);

      echo $Value;

      return;

   }

    include ("inc/connessione.php");

    $sql = "SELECT  r.data_riparazione,a.modello,r.tecnico,r.guasto

      FROM t_riparazioni r INNER JOIN t_apparati a

      ON r.id_apparato = a.id_apparato

      WHERE r.stato = '1' ORDER BY r.data_riparazione DESC;";

   

    $rs = mssql_query($sql) or die("Errore nel codice della query. ");

    // 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=export_riparazioni_aperte.xls ");

    header("Content-Transfer-Encoding: binary ");

    // XLS Data Cell

    xlsBOF(); 

    xlsWriteLabel(1,0,"Data riparazione");

    xlsWriteLabel(1,1,"Modello");

    xlsWriteLabel(1,2,"Tecnico");

    xlsWriteLabel(1,3,"Guasto");

    $xlsRow = 4;

    while(list($data_riparazione,$modello,$tecnico,$guasto) = mssql_fetch_row($rs)) {

      ++$i;

        xlsWriteLabel($xlsRow,0,"$data_riparazione");

        xlsWriteLabel($xlsRow,1,"$modello");

        xlsWriteLabel($xlsRow,2,"$tecnico");

        xlsWriteLabel($xlsRow,3,"$guasto");

      $xlsRow++;

    }

    xlsEOF();

    exit();

    mssql_close($connessione);

Grazie,

ciao.

inviato 7 anni fa
Nando
X 0 X

non deve essere: xlsWriteLabel(1,0,"Data riparazione"); ma bensì: xlsWriteLabel(0,0,"Data riparazione");

e la variabile $xlsRow = 4; deve essere impostata a: $xlsRow = 1;

rimane da capire adesso come fare per chiudere la popup dopo il salvataggio, problema che si presenta solo su IE6, su IE7 invece si chiude in automatico alla fine del salvataggio del file.

risposto 7 anni fa
Nando
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda