Talent

下载插件:

请自行到群文件下载 Excel 导入导出插件。

安装插件:

将插件目录移动到 /plugins 目录下,并访问后台 系统 > 扩展中心 > 插件管理 > 安装 Excel 插件。

导出 Excel 代码示例

    public function export()
    {
        // 查询数据
        $data = LevelModel::all();
        // 设置表头信息(对应字段名,宽度,显示表头名称)
        $cellName = [
            ['id', 'auto', 'ID'],
            ['name', 'auto', '级别名称'],
            ['score', 'auto', '积分要求'],
            ['discount', 'auto', '享受折扣'],
            ['create_time', 'auto', '创建时间'],
            ['update_time', 'auto', '更新时间']
        ];
        // 调用插件(传入插件名,[导出文件名、表头信息、具体数据])
        plugin_action('Excel/Excel/export', ['test', $cellName, $data]);
    }

导入 Excel 代码示例

    public function import()
    {
        // 提交数据
        if ($this->request->isPost()) {
            // 接收附件 ID
            $excel_file = $this->request->post('excel');
            // 获取附件 ID 完整路径
            $full_path = getcwd() . get_file_path($excel_file);
            // 只导入的字段列表
            $fields = [
                'name' => '姓名',
                'last_login_time' => '最后登录时间',
                'last_login_ip' => '最后登陆IP'
            ];
            // 调用插件('插件',[路径,导入表名,字段限制,类型,条件,重复数据检测字段])
            $import = plugin_action('Excel/Excel/import', [$full_path, 'vip_test', $fields, $type = 0, $where = null, $main_field = 'name']);
            
            // 失败或无数据导入
            if ($import['error']){
                $this->error($import['message']);
            }

            // 导入成功
            $this->success($import['message']);
        }

        // 创建演示用表单
        return ZBuilder::make('form')
            ->setPageTitle('导入Excel')
            ->addFormItems([ // 添加上传 Excel
                ['file', 'excel', '上传文件'],
            ])
            ->fetch();
    }
更多使用方法请自行阅读 Excel 插件源码
Talent

现有一字段,用来存储图片URL地址的,形式是URL|URL|URL,前台要分别显示每一张图片,方法一是直接取记录集赋值给模板,然后在前台模板调用模板标签的时候进行函数处理,不过本人觉得这样麻烦,所以采用方法二,方法一本文不予讨论,方法二就是在Select获取记录集后,重新处理一下数组,然后把记录集赋值给模板。具体代码如下:

$db = D('Order');
//获取记录集
$data = $db->Select()
//处理记录集,将多图片字段也做成数组
foreach($data as $k=>$val){
    $data [$k]['Pic'] = explode("|",$val['Pic']);
}
//赋值到模板
$this->assign('list',$data);

控制器中其实用最简单的foreach遍历处理一下数组就可以了,然后就可以在模板中直接用ThinkPHP内置的标签进行调用了,如下:

<!--记录集其它字段可以直接调用如下-->
{$data.title} - {$data.create_time}
<!--Pic为多图字段,直接用foreach标签循环输出便可-->
<foreach name="data.Pic" item="vo" >
    <img src="{$vo}" width="50" height="50" />
</foreach>

完毕,本文用到用到的就是 foreach 遍历数组,超简单应用,新手观看。