This a short tutorial on how to create a CSV file with PHP.
In this guide, we will also show you how to “force” the browser to download it as a file. This is extremely useful for creating “Export to CSV” buttons.
Take a look at the following PHP sample.
//The name of the CSV file that will be downloaded by the user. $fileName = 'example.csv'; //Set the Content-Type and Content-Disposition headers. header('Content-Type: application/excel'); header('Content-Disposition: attachment; filename="' . $fileName . '"'); //A multi-dimensional array containing our CSV data. $data = array( //Our header (optional). array("Name", "Registration Date"), //Our data array("Tom", "2012-01-04"), array("Lisa", "2011-09-29"), array("Harry", "2013-12-12") ); //Open up a PHP output stream using the function fopen. $fp = fopen('php://output', 'w'); //Loop through the array containing our CSV data. foreach ($data as $row) { //fputcsv formats the array into a CSV format. //It then writes the result to our output stream. fputcsv($fp, $row); } //Close the file handle. fclose($fp);
Here are the steps that we took.
- We gave our CSV file a name. This is the name that the file will have when the user downloads it.
- After that, we set our Content-Type and Content-Disposition headers. These headers will force the user’s browser to download the file.
- We then created a multidimensional array for our CSV data. This array should be an array that consists of arrays. Each array inside the $data array represents a row in our CSV file. The elements inside these arrays represents a column. If you look at the code above, you will see that we used a simple example of 4 rows and 2 columns. To understand this better, you can modify the array and change things around.
- After that, we opened up a PHP output stream.
- We then looped through the $data array. Inside the loop, we write each row to the output stream by using the function fputcsv.
- Finally, we closed the output stream.
If you run this PHP script on your server, you will see that a CSV file is automatically downloaded by the browser and that it contains the test data from our array.
See also: Reading a CSV file with PHP.