How To Convert PHP Array To CSV File And Download Automatically.

The function convert_array_to_csv($input_array, $download_file_name, $delimiter)  have 3 parameters which is used in below example.
The first parameter is used to convert PHP array to  CSV and The other two parameters are used to specify the name of the CSV file, and a delimiter.In this example we are using some function i.e. fopen(), fputcsv(), fseek() and fpassthru().

fopen() : This function opens a file or URL.
fopen() takes two parameters
1.php://memory is  read-write streams that allow temporary data to be stored in a file. php://memory will always store its data in memory.
2. Mode of the file i.e  "w" (Write only. Opens and clears the contents of file; or creates a new file if it doesn't exist).

fputcsv():This is used for formatting a line as CSV and writes it to an   open file.

fseek():This function moves the file pointer from its current  position to a new position, forward or backward, specified by the number of    bytes.

After executing fseek() in this example  CSV is ready to download. In order to   download/Export the file, We use

header('Content-Type: application/csv');
header('Content-Disposition: attachement; 
                        filename="' $download_file_name'";');

This  function tells the browser how to interpret it  content and also it tells the  browser that we want to download not display the content of the file.

fpassthru():This function reads all data from the current position in  an open file, until EOF, and writes the result to the output buffer.

index.php

<?php
function convert_array_to_csv($input_array, $download_file_name, $delimiter)
{
  $f = fopen('php://memory', 'w'); /* it will store its data in memory */

  
foreach ($input_array as $line) {

  fputcsv($f, $line, $delimiter); 

   }
 fseek($f, 0);   

 /* modify header to be downloadable csv file */
 header('Content-Type: application/csv');
 header('Content-Disposition: attachement; filename="' . $     download_file_name. '";');

 fpassthru($f); /* Send file to browser for download */
}

/** Array to convert to csv */
$array = Array(
    Array('RollNo',
         'FirstName', 
        'LastName'
    ),
    Array(1,
        'Durga',
        'prasad'
    ),
    Array(2,
        'Ranjan',
        'Kumar'
    ),
    Array(3,
        'Suresh',
        'Sarika'
    )
);
convert_array_to_csv($array, 'report.csv', ',');
?>  

Finally after executing index.php a CSV file name report.csv
automatically downloaded. And when we open this file in
Notepad it looks like this

RollNo,FirstName,LastName
1,Durga,prasad
2,Ranjan,Kumar
3,Suresh,Sarika

No comments:

Post a Comment

Labels

php (35) javascript (31) phpjavascript (30) jquery (23) html (20) mysql (14) database (9) codeigniter (4) json (4) bar chart (2) calendar (2) column chart (2) framework (2) google maps (2) query (2) tables (2) url (2) dropdown (1)

Popular Posts