dcat-admin

dcat-admin


数据导出

<h1>数据导出</h1> <p>系统默认使用&lt;a href=&quot;<a href="https://github.com/jqhph/easy-excel&quot">https://github.com/jqhph/easy-excel&quot</a>; target=&quot;__blank&quot;&gt;Easy Excel&lt;/a&gt;作为导出工具,支持导出 <code>csv</code>、 <code>xlsx</code> 和 <code>ods</code> 等格式文件。</p> <p>使用前必须先安装&lt;a href=&quot;<a href="https://github.com/jqhph/easy-excel&quot">https://github.com/jqhph/easy-excel&quot</a>; target=&quot;__blank&quot;&gt;Easy Excel&lt;/a&gt;:</p> <pre><code class="language-bash">composer require dcat/easy-excel</code></pre> <p>&gt; {tip} 默认不开启导出功能。</p> <h3>启用导出功能</h3> <p>启用或禁用导出功能</p> <pre><code class="language-php">$grid-&amp;gt;export();</code></pre> <p>禁用 <code>导出所有</code> 选项</p> <pre><code class="language-php">$grid-&amp;gt;export()-&amp;gt;disableExportAll();</code></pre> <p>禁用 <code>导出选中行</code> 选项</p> <pre><code class="language-php">$grid-&amp;gt;export()-&amp;gt;disableExportSelectedRow();</code></pre> <p>禁用 <code>导出当前页</code> 选项</p> <pre><code class="language-php">$grid-&amp;gt;export()-&amp;gt;disableExportCurrentPage();</code></pre> <h3>导出文件类型</h3> <p>&gt; {tip} 默认导出 <code>xlsx</code> 格式文件。</p> <pre><code class="language-php">// csv $grid-&amp;gt;export()-&amp;gt;csv(); // xlsx $grid-&amp;gt;export()-&amp;gt;xlsx(); // ods $grid-&amp;gt;export()-&amp;gt;ods();</code></pre> <h3>设置列标题</h3> <p>&gt; {tip} 如果设置了标题,那么导出的文件的<strong>列数</strong>与标题的<strong>列数</strong>相同,且列的<strong>排序</strong>也相同。</p> <pre><code class="language-php">// 只导出 id, name和email 三列数据 $titles = ['id' =&amp;gt; 'ID', 'name' =&amp;gt; '名称', 'email' =&amp;gt; '邮箱']; $grid-&amp;gt;export($titles); // 也可以这么使用 $grid-&amp;gt;export()-&amp;gt;titles($titles);</code></pre> <h3>处理导出数据</h3> <pre><code class="language-php">$grid-&amp;gt;export()-&amp;gt;rows(function (array $rows) { foreach ($rows as $index =&amp;gt; &amp;amp;$row) { $row['name'] = $row['first_name'].' '.$row['last_name']; } return $rows; });</code></pre> <h3>设置导出文件名</h3> <pre><code class="language-php">$grid-&amp;gt;export()-&amp;gt;filename('管理员数据');</code></pre> <p>&lt;a name=&quot;disable-export-extend&quot;&gt;&lt;/a&gt;</p> <h2>扩展导出功能</h2> <p>如果系统内置的导出功能不了自己的需求,可以按照下面的步骤来自定义导出功能</p> <p>本示例用<a href="https://github.com/Maatwebsite/Laravel-Excel">Laravel-Excel</a>作为excel操作库,当然也可以使用任何其他excel库</p> <p>首先安装好它:</p> <pre><code class="language-shell">composer require maatwebsite/excel:~2.1.0 php artisan vendor:publish --provider=&amp;quot;Maatwebsite\Excel\ExcelServiceProvider&amp;quot;</code></pre> <p>然后新建自定义导出类,比如<code>app/Admin/Extensions/ExcelExpoter.php</code>:</p> <pre><code class="language-php">&amp;lt;?php namespace App\Admin\Extensions; use Dcat\Admin\Grid\Exporters\AbstractExporter; use Maatwebsite\Excel\Facades\Excel; class ExcelExpoter extends AbstractExporter { public function export() { Excel::create('Filename', function($excel) { $excel-&amp;gt;sheet('Sheetname', function($sheet) { // 最多导出10W条数据 // 必须设置maxSize,当否则选择导出所有选项时只能导出默认的20条数据。 $maxSize = 10000; // 这段逻辑是从表格数据中取出需要导出的字段 $rows = collect($this-&amp;gt;buildData(1, $maxSize))-&amp;gt;map(function ($item) { return array_only($item, ['id', 'title', 'content', 'rate', 'keywords']); }); $sheet-&amp;gt;rows($rows); }); })-&amp;gt;export('xls'); } }</code></pre> <p>然后在<code>model-grid</code>中使用这个导出类:</p> <pre><code class="language-php"> use App\Admin\Extensions\ExcelExpoter; $grid-&amp;gt;export(new ExcelExpoter());</code></pre> <p>有关更多<code>Laravel-Excel</code>的使用方法,参考<a href="http://www.maatwebsite.nl/laravel-excel/docs">laravel-excel/docs</a></p>

页面列表

ITEM_HTML