Come scrivere un array PHP nel file xls?

I miei dati simile a questa (Dopo aver fatto clic su Visualizza Sorgente Pagina),

date \t new_users \t cpm \t earnings \t total_pushes \t avail_users \t application \t 
 2011-03-31  \t  336933  \t  $5.27  \t  $10151.2  \t  1925244  \t  1905744  \t  Play Movies  \t 
 2011-03-31  \t  205070  \t  $5.12  \t  $5810.26  \t  1134946  \t  1118354  \t  Watch Movies or TV Shows  \t 

Ho implodendo dato array con ‘\t’ e quindi dinamicamente scrittura in un file xls .Il problema con questo è che tutti i contenuti sono presenti solo nella prima colonna del file xls .

Quello che mi manca nel codice,non xls file, è necessario che il formato dei dati ?

  • \t non dovrebbe essere visibile, si dovrebbe vedere un [tab]. Inoltre, questo non sarà valido XLS, ma un file TSV. Ma forse, se si mostra un po ‘ di codice abbiamo potuto aiutare di più.
  • è giusto. Controllare il codice per vedere se si usano i doppi apici o virgolette il \t. Dovrebbe essere “virgolette”.
  • $colla = ‘\t’; $h = array( ‘data’ , ‘news’ , ‘cpm’ , ‘utile’ , ‘spinge’ , ‘count’ , ‘app’); $top = implode(“$colla”,$h).”\n”; $d = array( ‘0’=> array(‘2011′,’3′ ,’5.2′,’10151.2’, ‘1925244’,’1905744′,’Play Movies”), ‘1’=> array(‘2011′,’2′ ,’35.2’, ‘10151.2’, ‘1134946 ‘,’1118354 ‘,’Guardare Film o Spettacoli televisivi’) ); $f_c= “; foreach ($d $ed){ $cs = null; $cs = implode(“$colla” ,array_values($ed)); $f_conts .= $s. “\n”; } $f_cs =$top.$f_c; $f = ‘s.xls’; header(“Content-type: application/vnd.ms-excel”); header(“Content-disposition: nome=”.$f); print_r( $fn )

 

3 Replies
  1. 3

    Probabilmente si dovrebbe utilizzare fputcsv per costruire il tuo file. Non avete bisogno di preoccuparsi di impostazione il delimitatore. Poi si dovrebbe rinominare il file something.xls.

    Se si sta elaborando questo da una richiesta web, aggiungere la seguente intestazione: application/vnd.ms-excel

    <?php
    //create header array here...$myHeaders
    //create data array here... $myData
    
    $csvName = 'temp.csv';
    
    $fp = fopen($csvName, 'w');
    fputcsv($fp, $myHeaders);
    foreach ($myData as $line) {
        fputcsv($fp, $line);
    }
    fclose($fp);
    
    //now send to browser if this is a web request
    $csvData = file_get_contents($csvName);
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Length: ' . strlen($csvData));
    echo $csvData;
    exit;
  2. 2

    Per la generazione di xml valido, è possibile utilizzare f.e. il PHPExcel

    Se si statisfied con la più semplice formato, si può solo generare file in formato csv. Questo è abbastanza buono per aprire o MS office.
    Per il csv mettere il costruito contenuto semplicemente in un file, o utilizzare il fputcsv funzione

  3. 1

    Sembra che non si stia cercando di scrivere XLS ma CSV (comma-separated value) formato. Se questo è il caso, sostituire \t con , (o ;) e avvolgere il valore di tutti i campi (non i titoli delle colonne) tra doppi apici (").

    Excel deve gestire i file CSV formattato senza un problema.

    Se si vuole veramente per generare un file XLS, provare a generare una tabella HTML con i tuoi dati. Inserire il codice HTML per la tabella in una sola variabile e utilizzare il codice seguente per scaricare un file XLS-il file automaticamente:

    //Just some example data in a HTML table
    $htmlcontent = "<table><tr><th>col1</th><th>col2</th></tr><tr><td>val1-1</td><td>val1-2</td></tr></table>";
    
    //Create as XLS file and send to browser for download
    $filename ="data.xls";
    header('Content-type: application/ms-excel');
    header('Content-Disposition: attachment; filename='.$filename);
    echo $htmlcontent;

    Che modo, gli utenti possono scaricare il contenuto di un file XLS di Excel dovrebbe essere in grado di gestire bene.

    (PS; si può provare a utilizzare il \tdati separati come il contenuto del file invece di una tabella HTML, che può funzionare, ma non sono sicuro quindi dare un andare.)

Lascia un commento