Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPSReadSheet如何导出带有子标题的html?_Php_Laravel_Phpspreadsheet_Laravel Excel - Fatal编程技术网

PHPSReadSheet如何导出带有子标题的html?

PHPSReadSheet如何导出带有子标题的html?,php,laravel,phpspreadsheet,laravel-excel,Php,Laravel,Phpspreadsheet,Laravel Excel,参考: 预期的行为是什么? 无事件 目前的行为是什么? 复制的步骤是什么? 该问题基于内部使用PhpSpreadsheet // ... {{{{('Items')} // ... // ... @foreach($models->cursor()作为$model) // ... @foreach($model->关系作为$item) // ... @endforeach // ... @endforeach //这非常适用于单个标题,但不适用于子标题 公共函数registerEven

参考:

预期的行为是什么?

无事件

目前的行为是什么?

复制的步骤是什么? 该问题基于内部使用
PhpSpreadsheet


// ...
{{{{('Items')}
// ...
// ...
@foreach($models->cursor()作为$model)
// ...
@foreach($model->关系作为$item)
// ...
@endforeach
// ...
@endforeach
//这非常适用于单个标题,但不适用于子标题
公共函数registerEvents():数组
{
返回[
AfterSheet::class=>函数(AfterSheet$事件){
$sheet=$event->sheet->getDelegate();
$sheet->getRowDimension(1)->setRowHeight(30);
$header=$sheet->getStyle('A1:'.$sheet->getHighestDataColumn().'1');
$header->getAlignment()->setVertical(\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL\u CENTER);
$header->getFont()->setBold(true);
$header->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::Fill\u SOLID)->getStartColor()->setARGB('00000000');
$header->getFont()->getColor()->setARGB(\PhpOffice\PhpSpreadsheet\Style\Color::Color\u WHITE);
$other=$sheet->getStyle('A2:'。$sheet->getHighestDataColumn()。$sheet->getHighestRow());
$other->getAlignment()->setVertical(\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL\u TOP);
foreach([$header,$other]作为$item){
$item->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL\u LEFT);
$item->getAlignment()->setWrapText(true);
}
},
];
}

非常感谢您的帮助&如果您需要更多信息,请询问。

您现在面临的错误与您正在使用的库无关

主表中的每个关系项都使用HTML表,其中包含需要显示的所有内容。因此它不能很好地工作。并不是所有的web浏览器都支持格式错误的HTML文档,而且不同版本的浏览器对格式错误的HTML文档的支持差异很大

编写正确的HTML:使用DIVs元素构建一个智能的可视化网页,并且只显示TABLEs元素内部的关系,这样它们就不会像我们在这里看到的那样被部分隐藏或错误显示

因此,要构造HTML,如果以引导为例,可以使用一行作为标题,每项使用一行。对于每个关系项,您可以将它们放在一个表中,它们将正确显示。

子标题或
内部
是有效的HTML,应该可以与PHPSReadSheet/Laravel Excel配合使用。但根据,和

正如我在评论中提到的,我们在应用程序中使用了Laravel Excel,它使用了非常相似的布局,并且可以很好地处理head中的多行。因此,真正的问题是多体或嵌套体。我建议你按照计划去做。您可以使用适当的
行span
列span
来实现相同的布局(我们正在进行计算)

编辑:

根据要求,根据您的布局,这里有一个示例,下面是带循环的刀片视图

<table border="1">
  <thead>
    <tr>
        <th rowspan="2">Client Name</th>
        <th rowspan="2">Total</th>
        <th colspan="4">{{ __('Items') }}</th>
        <th rowspan="2">Creation Date</th>
    </tr>
    <tr>
        <th>Title</th>
        <th>Price</th>
        <th>Quantity</th>
        <th>Total</th>
    </tr>
    </thead>
    <tbody>
    @foreach($customers as $customer)
        @php
            $count = count($customer->items);
            $i = 0;
        @endphp

        @foreach($customer->items as $item)
            <tr>
                @if($i == 0)
                    <td rowspan="{{ $count }}">{{ $customer->name }}</td>
                    <td rowspan="{{ $count }}">{{ $customer->total }}</td>
                @endif

                <td>{{ $item->title }}</td>
                <td>{{ $item->price }}</td>
                <td>{{ $item->qty }}</td>
                <td>{{ $item->total }}</td>
            
                @if($i == 0)
                    <td rowspan="{{ $count }}">{{ $customer->date }}</td>
                @endif
            </tr>
            @php
                $i++;
            @endphp
        @endforeach
    @endforeach
  </tbody>
</table>

客户名称
全部的
{{{{('Items')}
创建日期
标题
价格
量
全部的
@foreach($customers作为$customer)
@php
$count=计数($customer->items);
$i=0;
@endphp
@foreach($customer->items as$item)
@如果($i==0)
{{$customer->name}
{{$customer->total}
@恩迪夫
{{$item->title}
{{$item->price}
{{$item->qty}
{{$item->total}
@如果($i==0)
{{$customer->date}
@恩迪夫
@php
$i++;
@endphp
@endforeach
@endforeach

事实上,我已经搜索过了,嵌套的标题是一个有效的html&如果它在浏览器中工作,没有任何css或样式,并且显示了预期的结果,那么它被认为是一个有效的html,对吗?也许你尝试的方式是有效的,但有两件事:1)你必须有一个有效的解决方案,2)它显示不好。因此,尝试另一种方法去做你需要做的事情可能会让你踏上正确的成功之路。我认为它会更好。你能为div解决方案添加一个例子吗?它不适用于div,你必须使用表来实现这一点。]问题是缺少标题,对吗?您是否也对边框/样式有问题,因为您没有明确指定:)我的团队一直在我们的一个应用程序中使用Laravel Excel,我们也有多个标题,但没有使用任何事件。没有你的样式事件会有什么结果?@fyrye img补充道:“它也有一些原来的额外列,但问题仍然是一样的”@sykez它与urs非常相似,只是我也必须在循环中移动
tbody
&一个新的
表来显示额外的列,否则它将无法按预期显示
你对边框/样式也有问题吗
你的意思是在视图内部吗(如果是,那么不是,我没有任何花哨的样式,除了将文本置于列的中心)@ctf0我明白了。是啊,欧