Owl Admin 中文文档


Excel 导入

<p>&gt; 这里举例一种 Excel 导入的写法, 或许不是最佳实现, 仅作参考~</p> <p>&gt; 数据量不大的情况下, 使用 <a href="https://aisuda.bce.baidu.com/amis/zh-CN/components/form/input-excel">InputExcel</a> 也是个不错的主意~</p> <p>&lt;br&gt;</p> <h3>1. 在 <code>CRUD</code> 的工具栏添加两个按钮</h3> <pre><code class="language-php">public function list(): Page { $crud = $this-&amp;gt;baseCRUD() -&amp;gt;headerToolbar([ $this-&amp;gt;createButton(true), // 导入按钮 Components::make()-&amp;gt;importAction(admin_url('xxx_records/import')), // 模板下载按钮 Components::make()-&amp;gt;downloadImportTemplate('template/XXX导入模板.xlsx'), ...$this-&amp;gt;baseHeaderToolBar(), ]) // .... }</code></pre> <p><em>注意: 此处的 <code>Components</code> 是自己封装的, 里面可以放一些常用的非基础组件, 并非框架自带~</em></p> <p>&lt;br&gt;</p> <h4>导入按钮实现</h4> <p>这里实现了一个弹窗表单, 上传文件并提交~</p> <pre><code class="language-php">// 这里我封装到了一个单独的 class 中 // 你也可以直接放到对应的 Controller , 或者是直接塞到 headerToolbar 里面, 随你高兴~ public function importAction($api) { return amis()-&amp;gt;DialogAction()-&amp;gt;label('导入')-&amp;gt;icon('fa fa-upload')-&amp;gt;dialog( amis()-&amp;gt;Dialog()-&amp;gt;title('导入')-&amp;gt;body( amis()-&amp;gt;Form()-&amp;gt;mode('normal')-&amp;gt;api($api)-&amp;gt;body([ amis()-&amp;gt;FileControl()-&amp;gt;name('file')-&amp;gt;required(true)-&amp;gt;drag(true), ]), ) ); }</code></pre> <p>&lt;br&gt;</p> <h4>模板下载按钮实现</h4> <p>这里传入了文件地址, 通过跳转链接的方式, 让浏览者自动下载文件~</p> <p><em>注: 这里我的模板文件路径为: <code>/public/template/XXX导入模板.xlsx</code></em></p> <pre><code class="language-php">public function downloadImportTemplate($path) { return amis() -&amp;gt;UrlAction() -&amp;gt;blank(true) -&amp;gt;label('下载模板') -&amp;gt;icon('fa fa-download') -&amp;gt;url(url($path)); }</code></pre> <p>&lt;br&gt;</p> <h3>2.实现导入接口</h3> <pre><code class="language-php">// file: app/Admin/routes.php // 添加一个路由 $router-&amp;gt;post('xxx_records/import', [\App\Admin\Controllers\XXXRecordController::class, 'import']);</code></pre> <pre><code class="language-php">// 控制器中实现导入数据 public function import(Request $request) { $file = storage_path('app/public/' . $request-&amp;gt;input('file')); $data = fastexcel()-&amp;gt;import($file); XXXRecord::insert($data-&amp;gt;toArray()); return $this-&amp;gt;response()-&amp;gt;successMessage('导入成功'); }</code></pre> <p><em>注: 此处使用 <a href="https://github.com/rap2hpoutre/fast-excel">fast-excel</a> 实现了最基础的数据导入, 其他逻辑自行添加~</em></p>

页面列表

ITEM_HTML