Owl Admin 中文文档


数据导出

<p>框架提供了基础的数据导出功能, 可以很方便的实现导出数据到 <code>.xlsx</code> 文件</p> <p>&gt; 此功能依赖于 <a href="https://docs.laravel-excel.com">laravel-excel</a> ( maatwebsite/excel ) &gt; 如果 <code>maatwebsite/excel</code> 安装时报错, 请先安装 <code>psr/simple-cache:^2.0</code> &gt; 相关 <a href="https://github.com/SpartnerNL/Laravel-Excel/issues/3815">issue</a></p> <p>&lt;br&gt;</p> <h2>使用</h2> <pre><code class="language-php">// 在列表工具栏添加导出按钮 public function list(): Page { $crud = $this-&amp;gt;baseCRUD() -&amp;gt;headerToolbar([ $this-&amp;gt;createButton(), ...$this-&amp;gt;baseHeaderToolBar(), // 添加导出按钮 $this-&amp;gt;exportAction(), ]) -&amp;gt;columns([ // ... ]); return $this-&amp;gt;baseList($crud); } </code></pre> <p>&lt;br&gt;</p> <h2>部分自定义配置</h2> <h3>导出文件名</h3> <pre><code class="language-php">// 在控制器中重写 exportFileName 方法 protected function exportFileName() { return '此处为导出文件名'; }</code></pre> <p>&lt;br&gt;</p> <h3>表头</h3> <pre><code class="language-php">// 在控制器中重写 exportHeadings 方法 protected function exportHeadings() { return [ '姓名', '年龄', '性别', '...' ]; }</code></pre> <p>&lt;br&gt;</p> <h3>导出列</h3> <pre><code class="language-php">// 在控制器中重写 exportColumns 方法 protected function exportColumns($row) { return [ $row-&amp;gt;name, $row-&amp;gt;age, // 可以在这里自定义处理数据, 如: $row-&amp;gt;gender == 1 ? '男' : '女', ]; }</code></pre> <p>&lt;br&gt;</p> <h2>完整自定义</h2> <p>如果以上配置不能满足你的需求, 你可以重写 <code>export</code> 方法, 自定义导出逻辑</p> <pre><code class="language-php">// 在控制器中重写 export 方法 // 此方法在 index() 中被调用, 当请求参数 _action=export 时 protected function export() { // 默认在 storage/app/ 下 $path = sprintf('%s-%s.xlsx', $this-&amp;gt;exportFileName(), date('YmdHis')); // 导出本页和导出选中项都是通过 _ids 查询 $ids = request()-&amp;gt;input('_ids'); // listQuery() 为列表查询条件,与获取列表数据一致 $query = $this-&amp;gt;service-&amp;gt;listQuery()-&amp;gt;when($ids, fn($query) =&amp;gt; $query-&amp;gt;whereIn('id', explode(',', $ids))); // 此处使用 laravel-excel 导出,可自行修改 AdminExport::make($query) -&amp;gt;setHeadings($this-&amp;gt;exportHeadings()) -&amp;gt;setMap(fn($row) =&amp;gt; $this-&amp;gt;exportColumns($row)) -&amp;gt;store($path); return $this-&amp;gt;response()-&amp;gt;success(compact('path')); }</code></pre>

页面列表

ITEM_HTML