Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add heading on export using fputcsv php

I am trying to export db rows using fputcsv() in csv file. how i can add heading on first, center align then columns then data my code works well without heading. I know there is many api's but is this possible with in my code.

Here is my code:-

                      Enquiry Report

   id         name         class         func
    1          rk           ba            call()
    2          bk           bd            that()

function exportdata_to_excel($details) {
 
  // filename for download 
  $filename = date("Y-m-d").".csv";
  header('Content-Type: text/csv');
  header("Content-Disposition: attachment; filename=\"$filename\""); 
  $out = fopen("php://output", 'w'); 
  
  $flag = false;
 
   //$result = $orderDetails; 
  while($row = mysql_fetch_assoc($details)) {
     $arr =array('Enquiry id'=>$row['id'],'Date'=>$row['created_on'],'Name'=>$row['name'], 'Email'=>$row['email'], 'Telephone'=>$row['telephone'], 'Customer Request'=>$row['customer_request'], 'Special Request'=>$row['special_request']);
    
     if(!$flag) { 
       // display field/column names as first row 
       fputcsv($out, array_keys($arr), ',', '"');
       $flag = true; 
     } 
     
     fputcsv($out, array_values($arr), ',', '"'); 
   } 
   
    fclose($out); 
    exit();
}
like image 680
Rakesh Sharma Avatar asked Jun 29 '13 08:06

Rakesh Sharma


People also ask

What is fputcsv function in PHP?

The fputcsv() function in PHP is an inbuilt function which is used to format a line as CSV(comma separated values) file and writes it to an open file.


2 Answers

This worked for me.

function downloadCSV($data)
{
    $filename = date("Y-m-d").".csv";

    header('Content-type: application/csv');
    header('Content-Disposition: attachment; filename=' . $filename);
    header("Content-Transfer-Encoding: UTF-8");

    $f = fopen('php://output', 'a');
    fputcsv($f, array_keys($data[0]));

    foreach ($data as $row) 
    {
        fputcsv($f, $row);
    }
    fclose($f);
}
like image 189
Saaz Rai Avatar answered Oct 06 '22 05:10

Saaz Rai


Try this after opening the file, you want to write in e.g. i want to write a file at below path:

$fp = fopen('csvfiles/myfile.csv','w')

You have to enter headers separately, so for this make an array of headers like:

$csv_fields=array();

$csv_fields[] = 'Enquiry id';
$csv_fields[] = 'Date';
$csv_fields[] = 'Name';
$csv_fields[] = 'Email';
$csv_fields[] = 'Telephone';
$csv_fields[] = 'Customer Request';
$csv_fields[] = 'Special Request';

After making headers add these headers to the file.

fputcsv($fp, $csv_fields);

while($row = mysql_fetch_assoc($details)) {

     fputcsv($fp,$row); 
   } 
fclose($fp);

Also add following headers on top so that file can be viewed easily:

header("content-type: application/force-download");
header('Content-Type: application/csv');
header('Pragma: no-cache');
like image 20
Rajazk Avatar answered Oct 06 '22 04:10

Rajazk