Index.php

[code]
<?php
	/*
	LET OP:
	Op dit moment mogen de velden alleen a t/m z , 0 t/m9 en een spatie bevatten.
	Eventuele gevolgen door gebruik van andere tekens kunnen niet op mij verhaald worden 
	Nog kan ik hiervoor verantwoordlijk worden gesteld
	
	Ook is de upload functie NOG niet veilig. Dit script is dan ook niet geschikt om publiek te draaien.
	Ik ben niet verantwoordelijk eventueel misbruik of de gevolgen hiervan mocht dit script toch op 
	een publieke locatie gehost worden
	*/
	error_reporting(E_ALL) ;
	//include de class
	require("Excel.inc.php");
	//maak database verbinding
	require("connect.php");
	$Excel = new Excel() ;
	
	/*Als de optie import word gebruikt doorloopt het script de volgende sctappen
	Het bestand word geupload naar de tmp dit (wel even zelf aanmaken nog) en geconverteerd naar csv
	Er worden een aantal matches en loops doorlopen en er word een tabel weergegeven zoals deze ook in je xls stond*/
	if (isset($_POST["import"]))
	{
		$Excel->upload($_FILES['uploadFile'],"test","tmp/") ;
	}
?>
	<form name="form1" enctype="multipart/form-data" method="post" action="index.php">
	  <p>
	    <input name="uploadFile"  type="file" id="uploadFile">
	  </p>
	  <p>
	    <input type="submit" name="import" value="Import">
	  </p>
	</form>
<!-- Het resultaat van de opgegeven query in het textveld query zal in de xls gezet worden -->
	<form method="post" action="list.php">
		<table>
			<tr>
				<td>Query :</td>
				<td><input type="text" name="query" value="SELECT * FROM colours"></td>
			</tr>
			<tr>
				<td colspan="2"><input type="submit" name="export" value="Export"></td>
			</tr>
			<tr>
			</tr>
		</table>
	</form>
[/code]

list.php

[code]
<?php
/*
	Deze pagina is verantwoordelijk voor de opmaak van de xls export.
*/
	require("Excel.inc.php");
	require("connect.php");
	$Excel = new Excel() ;
	$Excel->export($_POST["query"]);

?>
[/code]

Excel.inc.php

[code]
<?php

class Excel {

    /* Deze funtie upload het bestand en geeft de tabel terug die word weergegeven */
    function import($tmp_location,$file_name)
    {
         $handle = fopen($tmp_location.$file_name, "r");

        if ($handle) {
         $array = explode("\n", fread($handle, filesize($tmp_location.$file_name)));
        }  $total_array = count($array);
        $i = 0;
        $table = "<table>" ;
        while($i < $total_array) {
            preg_match_all("([a-zA-Z0-9\ ]+)",$array[$i],$data) ;
            //$data = explode(" ", $array[$i]);
            foreach($data as $item)
            {
                $table .= "<tr>" ;
                foreach($item as $item2)
                {
                    $item2 = str_replace("\"","",$item2) ;
                    $table .= "<td>$item2</td>" ;

                }
                $table .= "</tr>" ;
            }
            $i++;
        }
        $table .= "</table>" ;
        print $table ;
    }

    /*
    function save()
    {
    }*/

    /*Deze functie is verantwoordelijk voor het opbouwen van de xls file*/
    function export($select)
    {
        $export = mysql_query($select) or die(mysql_error());
        $fields = mysql_num_fields($export);

        $data = "" ;

        for ($i = 0; $i < $fields; $i++) {
            $data .= $this->convertFieldname(mysql_field_name($export, $i)) . "\t";
        }

        $data .= "\n";

        while($row = mysql_fetch_row($export)) {
            $line = '';
            foreach($row as $value) {
                if ((!isset($value)) OR ($value == "")) {
                    $value = "\t";
                } else {
                    $value = str_replace('"', '""', $value);
                    $value = '"' . $value . '"' . "\t";
                }
                $line .= $value;
            }
            $data .= trim($line)."\n";
        }
        $data = str_replace("\r","",$data);
        $this->download($data,"test") ;
    }
    /* Deze functie geeft het download scherm */
    function upload($old_file,$new_file,$tmp_path)
    {
        $file_name = $old_file["name"];
        $file_name = stripslashes($file_name);
        $file_name = str_replace("'","",$file_name);
        $new_file = $new_file.".csv" ;
        $copy = copy($old_file["tmp_name"] , $tmp_path.$new_file);
        $this->import($tmp_path,$new_file);
    }

    function download($content,$filename)
    {
        header("Content-type: application/xls");
        header("Content-Disposition: attachment; filename=$filename.xls");
        header("Pragma: no-cache");
        header("Expires: 0");
        print $content ;
    }

    function convertFieldname($field)
    {
        $field = str_replace("_"," ",$field) ;
        $field = strtolower($field) ;
        $field = strtoupper(substr($field,0,1)).substr($field,1) ;
        return $field ;
    }

}

?>
[/code]