fastadmin添加入导excel,并对导入的数据进行一定的处理

文章介绍了如何在FastAdmin应用中实现Excel文件的导入功能,利用PhpSpreadsheet库读取数据,处理空值,更新已有数据或添加新数据。代码示例展示了在视图和控制器中添加相应逻辑的过程。

fastadmin添加入导excel,并对导入的数据进行一定的处理,例如某列数据为空,修改为0,对原有的数据进行更新,没有的数据添加

  1. 在对应的view-index.html中,加入导入代码


                        <a href="javascript:;" data-url="ajax/upload" class="btn btn-info btn-import{:$auth->check('xcx/userphone/import')?'':'hide'}" title="{:__('Import')}" ><i class="fa fa-upload"></i> {:__('Import')}</a>

2、在对应的controller中,

在顶部添加文件use

use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
use PhpOffice\PhpSpreadsheet\Reader\Xls;
use PhpOffice\PhpSpreadsheet\Reader\Csv;

重写application/admin/library/traits/Backend.php  import()方法

/**
     * 导入
     */
    public function import()
    {


        $file = $this->request->request('file');
        if (!$fil
FastAdmin添加自定义导入框架可以按照以下步骤进行: ### 1. 准备导入模板文件 首先要准备好导入模板文件,如`.xls` 或 `.xlsx` 格式的文件,将其放置在项目的合适目录,例如 `public/uploads` 目录下。 ### 2. 修改视图文件 在对应的视图文件里添加导入按钮以及下载模板的链接。以下是示例代码: ```html <a href="javascript:;" class="btn btn-info btn-import" title="{:__('Import')}"><i class="fa fa-upload"></i> {:__('Import')}</a> <a href="/uploads/your_template.xls" target="_blank" class="btn btn-info btn-error-light" title="{:__('导入模板')}"><i class="fa fa-file-excel-o"></i> {:__('导入模板')}</a> ``` 要把 `/uploads/your_template.xls` 替换成实际的模板文件路径 [^1]。 ### 3. 编写导入逻辑 在控制器里编写处理导入数据的逻辑。可以借助 `PHPExcel` 或者 `PhpSpreadsheet` 这类库来解析 Excel 文件。下面是一个使用 `PhpSpreadsheet` 的示例: ```php use PhpOffice\PhpSpreadsheet\IOFactory; use PhpOffice\PhpSpreadsheet\Spreadsheet; public function import() { if ($this->request->isPost()) { $file = $this->request->file('file'); if ($file) { $reader = IOFactory::createReaderForFile($file->getRealPath()); $spreadsheet = $reader->load($file->getRealPath()); $worksheet = $spreadsheet->getActiveSheet(); $highestRow = $worksheet->getHighestRow(); for ($row = 2; $row <= $highestRow; $row++) { $data = []; // 根据列索引获取数据 $data['column1'] = $worksheet->getCell('A' . $row)->getValue(); $data['column2'] = $worksheet->getCell('B' . $row)->getValue(); // 保存数据数据库 // Model::create($data); } $this->success('导入成功'); } else { $this->error('请选择要导入的文件'); } } } ``` ### 4. 绑定导入按钮事件 在 JavaScript 里绑定导入按钮的点击事件,让其触发导入操作。示例代码如下: ```javascript $(document).on('click', '.btn-import', function () { Layer.open({ type: 2, title: __('Import'), area: ['800px', '500px'], content: 'your_controller/import', btn: [__('Submit'), __('Cancel')], yes: function (index, layero) { var iframeWindow = window['layui-layer-iframe' + index]; var form = iframeWindow.$('form'); form.submit(); } }); }); ``` 要把 `your_controller/import` 替换成实际的控制器和方法路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值