Any suggestions, I have not received a single reply :(
Dec 20, 2020
6
Level 2
Laravel Excel Style with CSS not working while exporting view
I am trying to export view using laravel Excel 3.1. While the export is working, I am not being able to style it.
My laravel Export looks as:
<?php
namespace App\Exports;
use Illuminate\Contracts\View\View;
use Maatwebsite\Excel\Concerns\FromView;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Concerns\RegistersEventListeners;
use Maatwebsite\Excel\Events\AfterSheet;
class MatrixExcelExport implements FromView, WithEvents
{
use RegistersEventListeners;
protected $data, $selected_data, $am_lists_only, $categories_list, $amenities_list, $affordable_list, $unit_type_list, $highlights_list, $non_unit;
public function __construct($data, $selected_data, $am_lists_only, $categories_list, $amenities_list, $affordable_list, $unit_type_list, $highlights_list, $non_unit)
{
$this->data = $data;
$this->selected_data = $selected_data;
$this->am_lists_only = $am_lists_only;
$this->categories_list = $categories_list;
$this->amenities_list = $amenities_list;
$this->affordable_list = $affordable_list;
$this->unit_type_list = $unit_type_list;
$this->highlights_list = $highlights_list;
$this->non_unit = $non_unit;
}
public function view(): View
{
return view('admin.matrix._excel', [
'data' => $this->data,
'selected_data' => $this->selected_data,
'am_lists_only' => $this->am_lists_only,
'categories' => $this->categories_list,
'amenities' => $this->amenities_list,
'affordables' => $this->affordable_list,
'unit_types' => $this->unit_type_list,
'highlights' => $this->highlights_list,
'non_unit' => $this->non_unit
]);
}
}
And my _excel looks like this:
<?php
$impact = 0;
$negativeChanges = 0;
$positiveChanges = 0;
?>
<style>
.strikethroughCell{
text-decoration: line-through !important;
}
.table-text-center th,
.table-text-center td{
text-align: center !important;
}
</style>
<table class="table-text-center">
<thead>
<tr>
<th rowspan="2">Bldg</th>
<th rowspan="2">Unit</th>
<th rowspan="2">Floor</th>
<th rowspan="2">Stack</th>
@foreach($selected_data as $k => $v)
<th colspan="{{count($v['amenities'])}}">
{{$v['category_name']}}
</th>
@endforeach
</tr>
<tr>
@foreach($am_lists_only as $ak => $av)
<th title="{{ $av }}">
<?php
if (strlen($av) > 15){
$av = substr($av, 0, 12) . '...';
}
?>
{{ $av }}
</th>
@endforeach
</tr>
</thead>
<tbody>
@foreach($data as $k => $v)
<?php
if(count($v) == 0){
continue;
}
$unit_cell_status = '';
$unit_note_class = '';
$avail_status = '';
if(trim($v[0]->unit_note) != ''){
$unit_note_class = 'unit_note';
}
if(isset($v[0]->avail_status)){
$avail_status = str_replace(' ','-',strtolower($v[0]->avail_status));
if(!in_array($avail_status,$highlights)){
$avail_status = '';
}
}
$unit_type_id = NULL;
if(!empty($v[0]->unit_type_id)){
$unit_type_id = $v[0]->unit_type_id;
}
$unit_type_class = (in_array($unit_type_id, $unit_types))?"td-unit-type":"";
?>
<tr id="ur_{{$v[0]->unit_id}}">
<td data-search="{{ $v[0]->building_number }}">{{ $v[0]->building_number }}</td>
<td data-search="{{ $v[0]->unit_id }}" data-unitid="{{$v[0]->unit_id}}" id="unitCell_{{$v[0]->unit_id}}" class="td-unit {{ $unit_note_class }} {{ $avail_status }} {{ $unit_type_class }}" xonclick="editUnit(1, {{ $v[0]->unit_id }}, {{ $v[0]->building_id }}); return false;">{{ $v[0]->unit_number }}</td>
<td data-search="{{ $v[0]->floor }}">{{ $v[0]->floor }}</td>
<td data-search="{{ $v[0]->stack }}">{{ $v[0]->stack }}</td>
@foreach($am_lists_only as $ak => $av)
<?php
$amenity_val = "";
$deleted_class = "";
$negativeClass = "";
$affordable = false;
$text_class = '';
$strikethrough_class = '';
foreach($v as $vk => $vv){
if($ak == $vv->amenity_id){
if( (isset($categories[0]) && $categories[0] === "-1") || !empty(in_array($vv->category_id, $categories)) || !empty(in_array($vv->amenity_id, $amenities))) {
if(empty($vv->uav_deleted_at)){
$impact += $vv->amenity_value;
if($vv->av_status == 2){
$text_class = 'text-updated';
if($unit_cell_status == ''){
$unit_cell_status = $text_class;
}
if($vv->initial_amenity_value != $vv->amenity_value){
$diff = $vv->amenity_value - $vv->initial_amenity_value ;
if($diff > 0){
$positiveChanges += $diff;
}else{
$negativeChanges += abs($diff);
}
}
}
if($vv->uav_status == 1){
$text_class = 'text-added';
$unit_cell_status = $text_class;
if($vv->amenity_value != 0){
if($vv->amenity_value > 0){
$positiveChanges += abs($vv->amenity_value);
}else{
$negativeChanges += abs($vv->amenity_value);
}
}
}
}else{
$deleted_class = "td-deleted";
if($vv->amenity_value != 0){
if($vv->amenity_value > 0){
$negativeChanges += abs($vv->amenity_value);
}else{
$positiveChanges += abs($vv->amenity_value);
}
}
$strikethrough_class = 'strikethroughCell';
}
$show_sum = true;
if($affordable == false && in_array($vv->amenity_id, $affordables) && empty($vv->uav_deleted_at)){
$affordable = true;
}
$amenity_val = $vv->amenity_value;
if($amenity_val < 0){
$amenity_val = "(".abs($amenity_val).")";
$negativeClass = 'text-negative';
}
if($deleted_class != ""){
$amenity_val = "<del>".$amenity_val."</del>";
}
}else{
if(empty($vv->uav_deleted_at)){
if($vv->av_status == 2){
if($vv->initial_amenity_value != $vv->amenity_value){
$diff = $vv->amenity_value - $vv->initial_amenity_value ;
if($diff > 0){
$positiveChanges += $diff;
}else{
$negativeChanges += abs($diff);
}
}
}
if($vv->uav_status == 1){
if($vv->amenity_value != 0){
if($vv->amenity_value > 0){
$positiveChanges += abs($vv->amenity_value);
}else{
$negativeChanges += abs($vv->amenity_value);
}
}
}
}else{
if($vv->amenity_value != 0){
if($vv->amenity_value > 0){
$negativeChanges += abs($vv->amenity_value);
}else{
$positiveChanges += abs($vv->amenity_value);
}
}
}
}
}
}
// $str = ['<del>','</del>'];
// $rplc =['-','-'];
// $search_val = str_replace($str,$rplc,$amenity_val);
?>
<td data-am_id="{{$ak}}" class="{{$strikethrough_class}} {{($affordable == true)?'affordable-unit':''}} {{$deleted_class}} {{$negativeClass}} {{ $text_class }}">
{!! $amenity_val !!}
</td>
@endforeach
</tr>
@endforeach
</tbody>
</table>
Well, I want to center the text of all cells and want to add strikethrough to the text of those td with class strikethroughCell
Please or to participate in this conversation.