Tuesday, August 9, 2016

Export Excel files in CSV format with UTF-8 encoding in Laravel

Case : You are given  2 dates ($dateFrom , $dateTo) and you have to find data within given range and export this data in csv format which can encode utf-8 character set.

We can divide this whole process in 2 parts.

First( Get Data)

$first_date = date('Y-m-d 00:00:00', strtotime($dateFrom));
$last_date  = date('Y-m-d 23:59:59', strtotime($dateTo));
Now get data from database: 
$admission_details_all=$this->getCompletedReportResult($first_date,$last_date);
Second(Export To Csv)
 First we have to define , which field we want to show in csv file.

So declare fields in an array as follow :

$arrColumns = array('name', 'phone_no', 'branch_name', 'course_name');

and remember this fields represents the field name you'll query from database.

The define first row of the csv file:

$arrFirstRow = array('Name', 'Phone No', 'Branch', 'Course');
$options = array(    'columns' => $arrColumns,    'firstRow' => $arrFirstRow,);
now create a function convertToCSV($admission_details_all, $options, $dateFrom ,$reportType) 
$admission_details_all is the data we get from database
$options is an array which has $arrColumns and $arrFirstRow
$dateFrom is a date time required to track when you exported your file
$reportType is required to name the exported file
now we have to call  convertToCSV function and return it.
return $csvconversionrepo->convertToCSV($admission_details_all, $options, $dateFrom ,$reportType); 
Here is the screen shot of  convertToCSV funtion
 

0 comments:

Post a Comment