Scripts
Excel export-import
Dit script heb ik uit verveling geschreven. Het is een begin van een class die ik wil schrijven voor het werken met xls files. Verder moet ik iedereen verzoeken even de let op op de index te lezen. Op dit moment werkt het script alleen goed als de velden gevuld zijn met a tm z , 0 tm 9 en een spatie (bijv "wat text op regel 15"). Er zitten geen ristricties aan kolomen of rijen binnen het script. Ik ga er vanuit dat iedereen verbinding met een database kan maken. Sugesties en opmerkingen (positief en negatief (mits onderbouwd)) zijn welkom
excel-exportimport
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]
Reacties
0