php turns SQL to Excel

Thanks StarGeek for this code.

this php script will write data from php using text from an SQL table (MySQL, supply your own SQL query) to a microsoft excel (.xls) file. The Excel file is specified as such by a set of headers, defining content, using php’s header() function.

//Written by Dan Zarrella. Some additional tweaks provided by JP Honeywell
//pear excel package has support for fonts and formulas etc.. more complicated
//this is good for quick table dumps (deliverables)

$result = mysql_query(‘select * from excel_test’, $linkID);
$count = mysql_num_fields($result);

for ($i = 0; $i < $count; $i++){
$header .= mysql_field_name($result, $i).“t”;

while($row = mysql_fetch_row($result)){
$line = ;
$row as $value){
$value) || $value == “”){
$value = “t”;
# important to escape any quotes to preserve them in the data.
$value = str_replace(‘”‘, ‘””‘, $value);
# needed to encapsulate data in quotes because some data might be multi line.
# the good news is that numbers remain numbers in Excel even though quoted.
$value = ‘”‘ . $value . ‘”‘ . “t”;
$line .= $value;
$data .= trim($line).“n”;
# this line is needed because returns embedded in the data have “r”
# and this looks like a “box character” in Excel
$data = str_replace(“r”, “”, $data);

# Nice to let someone know that the search came up empty.
# Otherwise only the column name headers will be output to Excel.
if ($data == “”) {
$data = “nno matching records foundn”;

# This line will stream the file to the user rather than spray it across the screen
header(“Content-type: application/octet-stream”);

# replace excelfile.xls with whatever you want the filename to default to
header(“Content-Disposition: attachment; filename=excelfile.xls”);
header(“Pragma: no-cache”);
header(“Expires: 0”);

echo $header.“n”.$data;

Leave a Reply