-------------- Original message ---------------------- From: Sam Smith <php@xxxxxxxx> > > I've got it working writing out a file (fopen) to CSV (comma delimited) and > the "header('Content-Disposition: attachment; filename="myFile.csv"')" > method but it's clumsy for the user to figure out how to use the file. > > Is there some totally slick way of spitting out a file that Excel can open > right up? Instead of opening a file and writing to it, just push excel headers and then just print like you would nomally do when generating a web page. If you output an html table excel will render it like a spreadsheet. I don't think I phrased that very well, so here's an example <? //get your result set up here if($sExport){ if ($sExport == 'xls'){ header("Content-Type: application/vnd.ms-excel"); header("Content-Disposition: attachment; filename=report.xls"); $joiner = "</td><td>"; $begin = "<tr><td>"; $end = "</td></tr>\n"; print "<table border='1'>"; } else{ header("Content-Type: text/plain"); header("Content-Disposition: attachment; filename=report.csv"); $joiner = ","; $begin = ""; $end = "\n"; } print $begin .implode($joiner, $aDisplayColumns).$end; //prints out a header row with column name (stored in $aDisplayColumns with row name as key and display value as value) while ($row = $dbObj->fetch_array($rs)){ unset ($push); $push = array(); foreach ($aDisplayColumns as $key => $val) { if ($sExport=='xls'){ $push[] = $row[$key]; }else{ $push[] = addslases($row[$key]); } } print $begin .implode($joiner, $push).$end; } if ($sExport=='xls'){ print "</table>"; } exit; } Hope that helps and is not too confusing. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php