Haig (Home) wrote:
Hi everyone, I have a small problem when exporting mysql into csv format.

The export works fine. The problem is, if the mysql table has a carriage
return, opening the csv file in excel will display a square box where the
carriage return is.

Displaying the table on a web page is fine.

Thanks for any help.

Haig

<?php

$csv_output = 'column1';

$csv_output .= "\015\012";

$result = mysql_query("select * from table"); while($row = mysql_fetch_array($result))
       {

              $csv_output .= '"'.$row[column1].'"';


In a more recent post, the op asked a question that is related to this, in a way.

Here is what I think your solution would look like

$data = preg_replace("!\r\n|\n|\r!", "\r\n", $row['column1']);
$csv_output .= '"' . $data . '"';

Reason being is that Windows uses "\r\n" for line endings. More than likely you are outputting "\n" This would cause windows to display one of those funky boxes that you are talking about.

PS. be sure and use quotes around your array key names, otherwise you might cause a PHP Notice on different systems.


              $csv_output .= "\015\012";

       }

header("Content-type: application/vnd.ms-excel");

header("Content-disposition:  attachment; filename=" .

date("Y-m-d")."_my_report".".csv");

   print $csv_output;

exit;
mysql_close();

       }



--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to