This is the code to export in Excel(SpreadSheet) in Laravel.
<?php
namespace AppHttpResources;
use IlluminateHttpRequest;
use IlluminateHttpResourcesJsonJsonResource;
class LeadsResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @return array<string, mixed>
*/
public function fieldData($field_data)
{
$fieldData = htmlspecialchars_decode($field_data, true); // Note: $field_data is already encoded with JSON_UNESCAPED_UNICODE
$fieldData = json_decode($fieldData, true);
// return $fieldData;
//dump($fieldData);
$newData = [];
if(is_array($fieldData))
{
foreach($fieldData as $field)
{
$data = [ucfirst(str_replace('_', ' ', $field->name)) => str_replace('_', ' ', implode(', ', isset($field->values) ? (array)$field->values : (array)'' ))];
//dump($data);
$data = json_encode($data, JSON_UNESCAPED_UNICODE);
// $data = implode(',',[ucfirst(str_replace('_', ' ', $field['name'])) => str_replace('_', ' ', implode(', ', isset($field['values']) ? (array)$field['values'] : (array)'' ))]);
//dump($data);
$field1 = htmlspecialchars_decode($data);
//dump($field1);
$data_new = str_replace('_',' ',$field1);
$data_new = str_replace('"',' ',$field1);
// $data_new = str_replace('{',' ',$field1);
// $data_new = str_replace('}',' ',$field1);
//dump($data_new);
$newData[] = $field1;
}
//dump($newData);
return $newData;
}
else{
return $field_data;
}
}
public function toArray(Request $request): array
{
return [
'id' => $this->id,
'account_id' => $this->account_id,
// 'campaign_id' => $this->campaign_id,
'campaign_name' => $this->campaign_name,
// 'adset_id' => $this->adset_id,
'adset_name' => $this->adset_name,
// 'ad_id' => $this->ad_id,
'ad_name' => $this->ad_name,
// 'ad_status' => $this->ad_status,
'lead_id' => $this->lead_id,
'lead_created_time' => $this->lead_created_time,
'platform' => $this->platform,
'form_id' => $this->form_id,
'field_data' => $this->fieldData($this->field_data),
'last_processed_time' => $this->last_processed_time,
// 'created_at' => $this->created_at,
// 'updated_at' => $this->updated_at,
];
}
}
When I only return after
$fieldData = htmlspecialchars_decode($field_data, true); return;
I get proper data in feild_data column like this :
[{“name”:”तुमच्या_लग्नाला_किती_वर्षे_झाली_आहेत?_”,”values”:[“X-Y_वर्ष”]},{“name”:”what_is_your_full_name?”,”values”:[“XYZ”]},{“name”:”what_is_your_phone_number?”,”values”:[“91xxxxxxxxx”]},{“name”:”what_is_your_email_address?”,”values”:[“[email protected]”]},{“name”:”city”,”values”:[“xxxxx”]},{“name”:”first_name”,”values”:[“Xxxxxx”]},{“name”:”last_name”,”values”:[“YYYYY”]}]
But when I do the above way I am getting it like this
[“{“u0924u0941u092eu091au094du092fu093e
u0932u0917u094du0928u093eu0932u093e u0915u093fu0924u0940
u0935u0930u094du0937u0947 u091du093eu0932u0940
u0906u0939u0947u0924? “:”X-Y
u0935u0930u094du0937″}”,”{“What is your full
name?”:”xxxxxxx”}”,”{“What is your phone
number?”:”+91xxxxxxxx”}”,”{“What is your email
address?”:”[email protected]”}”,”{“City”:”xxxxxxxxxx”}”,”{“First
name”:”Xxxxx”}”,”{“Last name”:”XXXXXX”}”]
I needed help in decoding for excel sheet, its looking properly in Laravel blade page, but not in Excel Sheet.