Ik heb een scriptje dat een database-tabel omzet naar een .xls bestand (excel). Als je naar het script linkt dan wordt er een .xls aangeboeden als download. echter, als ik het bestand uiteindelijk download, dan krijg ik van excel de melding dat de formatting niet klopt. Als ik heb dan toch open klopt het meeste wel aardig, maar toch gaat er het een en ander mis. In mijn tabel heb ik ook telefoonnummers staan. Excel ziet deze echter als nummer en verwijderd standaard de eerste 0. Verder zou ik graag willen dat de spreadsheet automatisch de kolombreedte aanpast op de inhoud van het grootste element in de kolom. Kan dit? Dit is mijn script tot nu toe:
<?php
$data = ""; //variable to hold the data
$header = ""; //variable to hold the header
$sql = "SELECT * FROM people;";
//echo "sql: ".$sql."<br />"; //debug
require_once('./inc/database.php');
if(!$connection = mysql_connect(HOST,UN,PASS)) { echo 'geen verbinding met database.<br /><br />'; }
elseif(!$db = mysql_select_db(DATABASE)) { echo 'geen verbinding met database.<br /><br />'; }
elseif(!$result = mysql_query($sql)) { echo 'fout: '.mysql_error().'<br /><br />'; }
else
{
$nr_of_fields = mysql_num_fields($result); //save the number of fields
//extract all the fieldnames from the table:
for ($i=0; $i<$nr_of_fields; $i++)
{
$header .= mysql_field_name($result, $i)."\t";
}
//extract all tyhe data from the table:
while($row = mysql_fetch_row($result))
{
$line = '';
foreach($row as $value)
{
if((!isset($value)) OR ($value == ""))
{
$value = "\t"; //no value
}
else
{
$value = str_replace('"', '""', $value); //preserve any quotes that are found
$value = '"'.$value.'"'."\t";
}
$line .= $value;
}#end of foreach $row
$data .= trim($line)."\n"; //remove any whitespace from $line, make every line appear on a new line
}$data = str_replace("\r","",$data); //replace carriage returns with nothing, they'd mess up the output
}
if($data == "")
{
$data = "\nGeen Gegevens Gevonden!\n"; //no data was found, inform the user
}
//make the excel-file:
header("Content-type: application/x-msdownload"); //make sure the file will be downloaded
header("Content-Disposition: attachment; filename=ledenbestand.xls"); //create the filename
header("pragma: no-cache");
header("Expires: 0");
print $header."\n".$data; //print the data for the file
?>
862 views