基于PHPoffice类去做excel表格数据导入导出

迅睿框架 更新 2026-07-20 09:06:23 琉惗

基于PHPoffice类去做excel表格数据导入导出,可以导出图片到excel,本人亲测一次性导入6000+条简单数据没什么问题,很快,在多就没试过

前端效果如下

导入,要点击确定才会进行导入数据

image

导出,如果不选择数据会提示选择数据然后进行导出

imageimage


第一步,下载上传的附件并将文件解压到你的项目中,具体目录如下图所示。入不放心我上传的附件,可自行安装composer进行下载地址如下

https://phpspreadsheet.readthedocs.io/en/stable/

image


PHPoffice


PS:在导入Excel的时候,要使用到文件上传接口,所以要现在后台创建一个文件上传字段,完成之后,要看一下上传接口对应的参数拿过来,然后替换我对应文件上传接口中的参数,这个文件上传字段不要删除,如果不想要在后台跟前台显示可以选择隐藏。

这是我使用的文件上传接口案列

http://census.cc/index.php?s=api&c=file&siteid=1&m=upload&p=020424c201c395dba90596754de3d341&fid=45


如何查看创建字段的上传接口以及参数

  1. 进入到后台添加页面,点f12进入到network中然后进行上传文件,上传之后,接口会在这里显示,打开之后,拿到对应的参数,并填入到,我写的ajax文件上传接口中对应的参数即可


image


第二步,在页面中添加导入导出按钮,我是加在对应模块的头部

image

代码如下:

image

image

前端js部分代码:

<script type="text/javascript">
    if (App.isAngularJsApp() === false) {
        jQuery(document).ready(function() {
            if (jQuery().datepicker) {
                $('.date-picker').datepicker({
                    rtl: App.isRTL(),
                    orientation: "left",
                    autoclose: true
                });
            }
        });
    }
    function dr_module_delete() {
        var url = '{dr_url(APP_DIR.'/home/del')}&is_ajax=1';
        var width = '50%';
        var height = '60%';
        if (is_mobile_cms == 1) {
            width = height = '90%';
        }
        var data = $("#myform").serialize();
        layer.open({
            type: 2,
            title: '{dr_lang('删除确认')}',
            shadeClose: true,
            shade: 0,
            area: [width, height],
            btn: [lang['ok']],
            yes: function(index, layero){
                var body = layer.getChildFrame('body', index);
                $(body).find('.form-group').removeClass('has-error');
                // 延迟加载
                var loading = layer.load(2, {
                    shade: [0.3,'#fff'], //0.1透明度的白色背景
                    time: 5000
                });
                $.ajax({type: "POST",dataType:"json", url: url, data: $(body).find('#myform').serialize(),
                    success: function(json) {
                        layer.close(loading);
                        if (json.code == 1) {
                            layer.close(index);
                            setTimeout("window.location.reload(true)", 2000)
                        } else {
                            $(body).find('#dr_row_'+json.data.field).addClass('has-error');
                        }
                        dr_tips(json.code, json.msg);
                        return false;
                    },
                    error: function(HttpRequest, ajaxOptions, thrownError) {
                        dr_ajax_alert_error(HttpRequest, ajaxOptions, thrownError);
                    }
                });
                return false;
            },
            content: url+'&'+data
        });
    }

    function dr_module_excelExport() {
        var arr = $("#myform").serializeArray();
        if (arr.length <= 2){
            layer.msg('请选择数据再进行导出操作');
            return;
        }
        var info = [];

        arr.forEach(function (data){
            if (data.name == 'ids[]') {
                info.push(data.value);
            }
        });
        $.ajax({
            type: "POST",
            dataType:"json",
            url: "{dr_url($uriprefix.'/dataExport')}",
            data: {
                'data': info,
                {csrf_token()} : "{csrf_hash()}"
            },
            success: function (data) {
                layer.open({
                    type: 1,
                    title: '{dr_lang('是否导出')}',
                    id: 'LAY_layuipro',
                    shadeClose: true,
                    shade: 0,
                    btn: ['确定','否'],
                    btnAlign: 'c' ,//按钮居中
                    yes: function(index, layero){
                        if (layero) {
                            self.location.href="{dr_url($uriprefix.'/excelExport')}&id="+data;
                            layer.close(index);
                        }else {
                            return false;
                        }
                    }
                });
            }
        });
    }
</script>
这段js放到最底部,记得要引用js文件
<script type="text/javascript" src="{THEME_PATH}from/layui/layui.js"></script>
<script>
    layui.use('upload', function(){
        var $ = layui.jquery
            ,upload = layui.upload;

        upload.render({
            elem: '#excelImport',
            url: '/index.php?s=api&c=file&siteid='+{SITE_ID}+'&m=upload&p=020424c201c395dba90596754de3d341&fid=45',
            accept: 'file',
            exts: 'xls|xlsx',
            field: "file_data",
            data: {
                file_data: function(){
                    return $('#excelImport').val();
                },
                {csrf_token()} : "{csrf_hash()}"
            },
            done: function(res){
                if(res.code == 1){
                    layer.open({
                        type: 1,
                        title: '{dr_lang('是否导入')}',
                        id: 'import',
                        shadeClose: true,
                        shade: 0,
                        btn: ['确定','否'],
                        btnAlign: 'c' ,//按钮居中
                        yes: function(index, layero){
                            if (layero) {
                                $.ajax({
                                    url: "{dr_url($uriprefix.'/excelImport')}",
                                    type: "POST",
                                    dataType: "json",
                                    data: {
                                        url: res.info.url,
                                        id: res.id,
                                        type: res.info.ext,
                                        {csrf_token()} : "{csrf_hash()}"
                                    },
                                    success: function(data){
                                        if (data.code == 1){
                                            layer.msg('<span style="color: #fff">信息导入成功!</span>');
                                        }
                                    },
                                    error: function(data){
                                        if (data.code == 0){
                                            layer.msg('<span style="color: #fff">信息导入失败!请从第'+data.total+'条开始导入!</span>');
                                        }
                                    }
                                });
                                layer.close(index);
                            }else {
                                return false;
                            }
                        }
                    });
                }else{
                    return layer.msg('<span style="color: #fff">上传失败,请重试!</span>');
                }
            }
        });
    });

</script>

html部分

<ul class="page-breadcrumb">
                    {$menu}
                    <li>
                        <link type="text/css" rel="stylesheet" href="{THEME_PATH}from/layui/css/layui.css" />
                        <div class="layui-upload">
                            <button type="button" style="background: #fff; color: #888; padding: 0 0" class="layui-btn layui-btn-normal" id="excelImport"><i class="fa fa-plus"></i>导入</button>
                            <i style="color: #DDDDDD" class="fa fa-circle"></i>
                        </div>
                    </li>
                    <li>
                        <a onclick="dr_module_excelExport()" id="excelExport" class="">
                            <i class="fa fa-minus"></i> 导出</a>
                        <i class="fa fa-circle"></i>
                    </li>
                </ul>

php部分

<?php namespace Phpcmf\Controllers\Admin;

    require 'vendor/autoload.php'; //写入口文件

    use PhpOffice\PhpSpreadsheet\Spreadsheet; //引入类,这三个都要引入

    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

    use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;

/**

 * 二次开发时可以修改本文件,不影响升级覆盖

 */



class Home extends \Phpcmf\Admin\Module

{



    //获取要导出的数据id并返回给ajax

    public function dataExport(){

        $arr = $_POST['data'];

        $data = implode(',',$arr);

        return json_encode($data);

    }

    //数据导出

    public function excelExport() {

        $id = $_GET['id'];

        $line = 0;



        $spreadsheet = new Spreadsheet();

        $image = new Drawing();



        $sheet = $spreadsheet->getActiveSheet();



        $sheet->setCellValueByColumnAndRow(1, 1, '户主关系');//这些数据对应excel的列信息

        $sheet->setCellValueByColumnAndRow(2, 1, '姓名');

        $sheet->setCellValueByColumnAndRow(3, 1, '证件名称');

        $sheet->setCellValueByColumnAndRow(4, 1, '证件号码');

        $sheet->setCellValueByColumnAndRow(5, 1, '籍贯');

        $sheet->setCellValueByColumnAndRow(6, 1, '年龄');

        $sheet->setCellValueByColumnAndRow(7, 1, '性别');

        $sheet->setCellValueByColumnAndRow(8, 1, '户籍地');

        $sheet->setCellValueByColumnAndRow(9, 1, '手机座机');

        $sheet->setCellValueByColumnAndRow(10, 1, '座机电话');

        $sheet->setCellValueByColumnAndRow(11, 1, '出生时间');

        $sheet->setCellValueByColumnAndRow(12, 1, '死亡时间');

        $sheet->setCellValueByColumnAndRow(13, 1, '是否低保');

        $sheet->setCellValueByColumnAndRow(14, 1, '是否享受生活救助');

        $sheet->setCellValueByColumnAndRow(15, 1, '是否暂住');

        $sheet->setCellValueByColumnAndRow(16, 1, '暂住地');

        $sheet->setCellValueByColumnAndRow(17, 1, '是否流动人口');

        $sheet->setCellValueByColumnAndRow(18, 1, '是否矫正人员');

        $sheet->setCellValueByColumnAndRow(19, 1, '是否涉毒人员');

        $sheet->setCellValueByColumnAndRow(20, 1, '是否残疾');

        $sheet->setCellValueByColumnAndRow(21, 1, '用人单位');

        $sheet->setCellValueByColumnAndRow(22, 1, '社保信息');

        $sheet->setCellValueByColumnAndRow(23, 1, '个人健康状况');

        $sheet->setCellValueByColumnAndRow(24, 1, '实际居住地');

        $sheet->setCellValueByColumnAndRow(25, 1, '实际居住详细地址');

        $sheet->setCellValueByColumnAndRow(26, 1, '照片');





        $styleArray = [

            'alignment' => [

                'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,

            ],

        ];



        //查询并获取要导出的数据

        $data = \Phpcmf\Service::M()->db->table(SITE_ID.'_census')

            ->select('

                relation,name,head,card_name,card_id,hometown,age,sex,domicile,phone,

                tel,birthday,deadtime,is_guarantee,is_assistance,is_residence,temporary,

                population,correction,is_poison,is_deformity,employer,shebaoxinxi,health,

                residence,address

            ')

            ->where('id in('.$id.')')

            ->get()->getResultArray();



        $relation = dr_field_options(16);

        $card_name = dr_field_options(19);

        $sex = dr_field_options(23);

        $is_guarantee = dr_field_options(30);

        $is_assistance = dr_field_options(31);

        $is_residence = dr_field_options(32);

        $population = dr_field_options(34);

        $correction = dr_field_options(35);

        $is_poison = dr_field_options(36);

        $is_deformity = dr_field_options(37);

        $shebaoxinxi = dr_field_options(39);

        $health = dr_field_options(40);



        //通过循环去匹配数据

        for ($i = 0; $i < count($data); $i++) {

            $line = $i + 2;//代表从第几行开始



            //$sheet->setCellValueByColumnAndRow(1)中的1,2,3代表上面的那一列

            $sheet->setCellValueByColumnAndRow(1, $line, $relation[$data[$i]['relation']]);

            $sheet->setCellValueByColumnAndRow(2, $line, $data[$i]['name']);

            $sheet->setCellValueByColumnAndRow(3, $line, $card_name[$data[$i]['card_name']]);

            $sheet->setCellValueByColumnAndRow(4, $line, $data[$i]['card_id']);

            $sheet->setCellValueByColumnAndRow(5, $line, $data[$i]['hometown']);

            $sheet->setCellValueByColumnAndRow(6, $line, $data[$i]['age']);

            $sheet->setCellValueByColumnAndRow(7, $line, $sex[$data[$i]['sex']]);

            $sheet->setCellValueByColumnAndRow(8, $line, $data[$i]['domicile']);

            $sheet->setCellValueByColumnAndRow(9, $line, $data[$i]['phone']);

            $sheet->setCellValueByColumnAndRow(10, $line, $data[$i]['tel']);

            $sheet->setCellValueByColumnAndRow(11, $line, dr_date($data[$i]['birthday'],'Y-m-m H:i:s'));

            $sheet->setCellValueByColumnAndRow(12, $line, dr_date($data[$i]['deadtime'],'Y-m-m H:i:s'));

            $sheet->setCellValueByColumnAndRow(13, $line, $is_guarantee[$data[$i]['is_guarantee']]);

            $sheet->setCellValueByColumnAndRow(14, $line, $is_assistance[$data[$i]['is_assistance']]);

            $sheet->setCellValueByColumnAndRow(15, $line, $is_residence[$data[$i]['is_residence']]);

            $sheet->setCellValueByColumnAndRow(16, $line, $data[$i]['temporary']);

            $sheet->setCellValueByColumnAndRow(17, $line, $population[$data[$i]['population']]);

            $sheet->setCellValueByColumnAndRow(18, $line, $correction[$data[$i]['correction']]);

            $sheet->setCellValueByColumnAndRow(19, $line, $is_poison[$data[$i]['is_poison']]);

            $sheet->setCellValueByColumnAndRow(20, $line, $is_deformity[$data[$i]['is_deformity']]);

            $sheet->setCellValueByColumnAndRow(21, $line, $data[$i]['employer']);

            $sheet->setCellValueByColumnAndRow(22, $line, $shebaoxinxi[$data[$i]['shebaoxinxi']]);

            $sheet->setCellValueByColumnAndRow(23, $line, $health[$data[$i]['health']]);

            $sheet->setCellValueByColumnAndRow(24, $line, dr_linkagepos('address', $data[$i]['residence'], ' - '));

            $sheet->setCellValueByColumnAndRow(25, $line, $data[$i]['address']);



            $url =  parse_url(dr_thumb($data[$i]['head']));//获取图片对应的地址



            //使用图片导出类

            $drawing[$line] = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing();

            $drawing[$line]->setName('头像');

            $drawing[$line]->setDescription('头像');

            $drawing[$line]->setPath('.'.$url['path']);

            $drawing[$line]->setWidth(100);

            $drawing[$line]->setHeight(100);

            $drawing[$line]->setCoordinates('Z'.$line);//z代表某一咧

            $drawing[$line]->setOffsetX(0);

            $drawing[$line]->setOffsetY(0);

            $drawing[$line]->setWorksheet($spreadsheet->getActiveSheet());

            $spreadsheet->getActiveSheet()->getRowDimension($line)->setRowHeight(100);//设置高度

        }



        $filename = '户籍信息管理表('.date('YmdHis',SYS_TIME).').xlsx';//导出表格名称

        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');

        header('Content-Disposition: attachment;filename="'.$filename.'"');

        header('Cache-Control: max-age=0');



        //设置样式

        $spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(12);

        $spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(12);

        $spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(15);

        $spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(25);

        $spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(15);

        $spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(5);

        $spreadsheet->getActiveSheet()->getColumnDimension('G')->setWidth(5);

        $spreadsheet->getActiveSheet()->getColumnDimension('H')->setWidth(15);

        $spreadsheet->getActiveSheet()->getColumnDimension('I')->setWidth(15);

        $spreadsheet->getActiveSheet()->getColumnDimension('J')->setWidth(15);

        $spreadsheet->getActiveSheet()->getColumnDimension('K')->setWidth(18);

        $spreadsheet->getActiveSheet()->getColumnDimension('L')->setWidth(18);

        $spreadsheet->getActiveSheet()->getColumnDimension('M')->setWidth(9);

        $spreadsheet->getActiveSheet()->getColumnDimension('N')->setWidth(17);

        $spreadsheet->getActiveSheet()->getColumnDimension('O')->setWidth(9);

        $spreadsheet->getActiveSheet()->getColumnDimension('P')->setWidth(35);

        $spreadsheet->getActiveSheet()->getColumnDimension('Q')->setWidth(13);

        $spreadsheet->getActiveSheet()->getColumnDimension('R')->setWidth(13);

        $spreadsheet->getActiveSheet()->getColumnDimension('S')->setWidth(13);

        $spreadsheet->getActiveSheet()->getColumnDimension('T')->setWidth(9);

        $spreadsheet->getActiveSheet()->getColumnDimension('U')->setWidth(35);

        $spreadsheet->getActiveSheet()->getColumnDimension('V')->setWidth(85);

        $spreadsheet->getActiveSheet()->getColumnDimension('W')->setWidth(13);

        $spreadsheet->getActiveSheet()->getColumnDimension('X')->setWidth(35);

        $spreadsheet->getActiveSheet()->getColumnDimension('Y')->setWidth(35);

        $spreadsheet->getActiveSheet()->getColumnDimension('Z')->setWidth(26);



        $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');

        $writer->save('php://output');

    }



    //表格导入

    public function excelImport() {

        $excel = parse_url($_POST['url']);

        $type = ucfirst($_POST['type']);

        $fileid = $_POST['id'];

        $this->db = \Config\Database::connect('default');



        $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($type);

        $reader->setReadDataOnly(TRUE);

        $spreadsheet = $reader->load('.'.$excel['path']); //载入excel表格



        $worksheet = $spreadsheet->getActiveSheet();

        $highestRow = $worksheet->getHighestRow(); // 总行数

        $highestColumn = $worksheet->getHighestColumn(); // 总列数

        $highestColumnIndex = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($highestColumn); // e.g. 5



        $lines = $highestRow - 1;

        if ($lines <= 0) {

            exit('Excel表格中没有数据');

        }



        $sql = "INSERT INTO 'dr_".SITE_ID."_census' ('relation','name','head','card_name','card_id','hometown','age','sex','domicile','phone',

                'tel','birthday','deadtime','is_guarantee','is_assistance','is_residence','temporary',

                'population','correction','is_poison','is_deformity','employer','shebaoxinxi','health',

                'residence','address') VALUES ";

        $data = [];



        $relation = dr_field_options(16);

        $card_name = dr_field_options(19);

        $sex = dr_field_options(23);

        $is_guarantee = dr_field_options(30);

        $is_assistance = dr_field_options(31);

        $is_residence = dr_field_options(32);

        $population = dr_field_options(34);

        $correction = dr_field_options(35);

        $is_poison = dr_field_options(36);

        $is_deformity = dr_field_options(37);

        $shebaoxinxi = dr_field_options(39);

        $health = dr_field_options(40);



        //获取表格中的数据

        for ($row = 0; $row < $lines; $row++) {

            $data[$row]['url'] = $worksheet->getCellByColumnAndRow(1, $row+2)->getValue();

            foreach ($relation as $key => $re) {

                if ($re === $worksheet->getCellByColumnAndRow(2, $row+2)->getValue()) {

                    $data[$row]['relation'] = $key;

                }

            }

            $data[$row]['name'] = $worksheet->getCellByColumnAndRow(3, $row+2)->getValue();

            foreach ($card_name as $key => $ca) {

                if ($ca === $worksheet->getCellByColumnAndRow(4, $row+2)->getValue()) {

                    $data[$row]['card_name'] = $key;

                }

            }

            $data[$row]['card_id'] = $worksheet->getCellByColumnAndRow(5, $row+2)->getValue();

            $data[$row]['hometown'] = $worksheet->getCellByColumnAndRow(6, $row+2)->getValue();

            $data[$row]['age'] = $worksheet->getCellByColumnAndRow(7, $row+2)->getValue();

            foreach ($sex as $key => $se) {

                if ($se === $worksheet->getCellByColumnAndRow(8, $row+2)->getValue()) {

                    $data[$row]['sex'] = $key;

                }

            }

            $data[$row]['domicile'] = $worksheet->getCellByColumnAndRow(9, $row+2)->getValue();

            $data[$row]['phone'] = $worksheet->getCellByColumnAndRow(10, $row+2)->getValue();

            $data[$row]['tel'] = $worksheet->getCellByColumnAndRow(11, $row+2)->getValue();

            $data[$row]['birthday'] = strtotime($worksheet->getCellByColumnAndRow(12, $row+2)->getValue());

            $data[$row]['deadtime'] = strtotime($worksheet->getCellByColumnAndRow(13, $row+2)->getValue());

            foreach ($is_guarantee as $key => $is_gu) {

                if ($is_gu === $worksheet->getCellByColumnAndRow(14, $row+2)->getValue()) {

                    $data[$row]['is_guarantee'] = $key;

                }

            }

            foreach ($is_assistance as $key => $is_as) {

                if ($is_as === $worksheet->getCellByColumnAndRow(15, $row+2)->getValue()) {

                    $data[$row]['is_assistance'] = $key;

                }

            }

            foreach ($is_residence as $key => $is_re) {

                if ($is_re === $worksheet->getCellByColumnAndRow(16, $row+2)->getValue()) {

                    $data[$row]['is_residence'] = $key;

                }

            }

            $data[$row]['temporary'] = $worksheet->getCellByColumnAndRow(17, $row+2)->getValue();

            foreach ($population as $key => $po) {

                if ($po === $worksheet->getCellByColumnAndRow(18, $row+2)->getValue()) {

                    $data[$row]['population'] = $key;

                }

            }

            foreach ($correction as $key => $co) {

                if ($co === $worksheet->getCellByColumnAndRow(19, $row+2)->getValue()) {

                    $data[$row]['correction'] = $key;

                }

            }

            foreach ($is_poison as $key => $is_po) {

                if ($is_po === $worksheet->getCellByColumnAndRow(20, $row+2)->getValue()) {

                    $data[$row]['is_poison'] = $key;

                }

            }

            foreach ($is_deformity as $key => $is_de) {

                if ($is_de === $worksheet->getCellByColumnAndRow(21, $row+2)->getValue()) {

                    $data[$row]['is_deformity'] = $key;

                }

            }

            $data[$row]['employer'] = $worksheet->getCellByColumnAndRow(22, $row+2)->getValue();

            foreach ($shebaoxinxi as $key => $she) {

                if ($she === $worksheet->getCellByColumnAndRow(23, $row+2)->getValue()) {

                    $data[$row]['shebaoxinxi'] = $key;

                }

            }

            foreach ($health as $key => $he) {

                if ($he === $worksheet->getCellByColumnAndRow(24, $row+2)->getValue()) {

                    $data[$row]['health'] = $key;

                }

            }

            $address = explode(' - ',$worksheet->getCellByColumnAndRow(25, $row+2)->getValue());

            foreach ($address as $add) {}

            $area = \Phpcmf\Service::M()->db->table('linkage_data_1')->where('name', $add)->get()->getResultArray();

            $data[$row]['residence'] = $area[0]['id'];

            $data[$row]['address'] = $worksheet->getCellByColumnAndRow(26, $row+2)->getValue();

            $data[$row]['head'] = $worksheet->getCellByColumnAndRow(27, $row+2)->getValue();

            $data[$row]['catid'] = 1;

            $data[$row]['inputip'] = \Phpcmf\Service::L('input')->ip_address();

            $data[$row]['inputtime'] = SYS_TIME;

            $data[$row]['updatetime'] = SYS_TIME;

        }

        //将从Excel表格中获取到的数据插入到数据库中

        foreach ($data as $key => $da){

            if ($da['url'] == null || $da['url'] == ' '){

                $da['fid'] = 0;

                $info = $this->db->table(SITE_ID.'_census')->insert($da);

                if ($info){

                    $fid = $this->db->insertID();

                    $card_id = $da['card_id'];

                    if ($info) {

                        $code = 1;

                    }else{

                        $code = 0;

                        $total = $key+2;

                    }

                }

            }else{

                if ($da['url'] == $card_id){

                    $da['fid'] = $fid;

                    $da['url'] = ' ';

                    $info = $this->db->table(SITE_ID.'_census')->insert($da);

                    if ($info) {

                        $code = 1;

                    }else{

                        $code = 0;

                        $total = $key+2;

                    }

                }

            }

        }

        if ($info) {

            \Phpcmf\Service::M('Attachment')->file_delete($this->member['id'],$fileid);//删除附件,如果导入成功之后不想删除附件,删除这句话即可

            return json_encode(['code'=>$code]);

        }else {

            \Phpcmf\Service::M('Attachment')->file_delete($this->member['id'],$fileid);

            return json_encode(['code'=>$code],['total'=>$total]);

        }

    }

}


方案

  • 琉惗 #1 · 2020-02-26 02:26:06
    如需定制,可以加我QQ1191892256或者私聊我,随时有空,有什么问题也可以问我。顺便推广一下我的火车头采集插件,任何模块都可以导入,根据独立跟共享模块接口,分别可以获取所有模块的栏目,多模块,多文件,随机会员。需要的可以看看参考文档:《火车头内容采集》
  • 琉惗 #2 · 2020-02-26 02:29:00
    • 火车头采集器

      火车头采集器,即装即用,支持所有模块,多文件采集,默认news模块,可以发布独立模块以及...

  • 丛林灰太狼 #3 · 2020-02-26 11:36:50
    哈,这个牛逼,看下
  • 琉惗 #4 · 2020-02-26 11:42:02
    开箱即用,粘贴复制就可以了,改一下里面要导出的字段就ok,图片也可以导出,看不懂可以问我,不过最好看一下手册,都有,用的时候,把html。js这些原样复制过去就可以了,后台也是,后台代码就需要改要导出的字段,其他的不要改丛林灰太狼
  • 丛林灰太狼 #5 · 2020-02-26 11:44:19
    琉惗 php的 把导出字段修改为我自己的字段就可以了是吗?这个可以用于pos3不,哥们!
  • 琉惗 #6 · 2020-02-26 11:46:49
    可以的,方法一样的,不管pos3跟讯睿都可以,前端不要改,就要改后端的那个数据查询方式,数据查询方式不一样,其他的一模一样
    image
    比如这样的方式,pos3就不一样的话就要改这样的方式就可以了
    丛林灰太狼
  • 丛林灰太狼 #7 · 2020-02-26 11:53:01
    哈哈 多谢之,兄弟,我现在先试试,不懂在群里还是这么问?琉惗
  • 草木人 #8 · 2020-02-26 11:53:52
    厉害,学习学习
  • 琉惗 #9 · 2020-02-26 11:59:32
    不懂可以加我QQ或者私聊我,我会给你说的1191892256丛林灰太狼
  • 丛林灰太狼 #10 · 2020-02-26 12:01:48
    哈哈 我就是群里的UU,我有你QQ呢,兄弟!琉惗
  • 琉惗 #11 · 2020-02-26 12:29:44
    好吧.丛林灰太狼
  • 昱宇 #12 · 2020-02-26 13:47:23
    厉害,学习学习
  • 琉惗 #13 · 2020-02-26 16:45:58
    这两个要删掉,是系统自己加上的,js部分改成这样
    self.location.href="{dr_url($uriprefix.'/excelExport')}&id="+data;

    image

    image
  • 琉惗 #14 · 2020-02-26 16:46:38
    self.location.href="{dr_url($uriprefix.'/excelExport')}&id="+data;
    js的改成这样
  • 琉惗 #15 · 2020-02-26 16:47:33
    js改成这样.....系统会自己多加个东西......
    image
  • 丛林灰太狼 #16 · 2020-02-26 19:29:30
    哈哈,楼主水平相当牛,关键是相当的热心,搞不懂的直接远程帮解决,非常感谢,建议可以独立,平时在群里也非常热心,建议有开发需求的朋友,需要外包的可以找他,哈哈!
  • 丛林灰太狼 #17 · 2020-02-26 19:30:12
    建议可以独立成插件,少打几个字了 哈哈
    丛林灰太狼
  • 过把瘾 #18 · 2020-03-01 09:58:10
    厉害,学习学习
  • 湘西北的风 #19 · 2020-03-01 10:10:59
    做成插件 ,很多人需要
  • 琉惗 #20 · 2020-03-01 10:33:12
    哦,我觉得这个东西已经是可以用了,就看需要的人懒不懒愿不愿意改一下里面的要导出的字段就行了,你可以问问楼上的那个丛林森林狼。他已经会了,很简单,所以我觉得人人都可以自己做,就没做插件,不过马上就要做了,有客户需要.........湘西北的风
  • yunshui2011 #21 · 2020-03-04 12:59:18
    不错 看看
  • 清萌网络科技 #22 · 2020-03-05 22:13:51
    本部分内容设定了隐藏,需要回复后才能看到,立即回复
  • 小风 #23 · 2020-03-20 16:42:22
    学习一下看能不能用
  • 唉呦喂 #24 · 2020-03-22 13:20:03
    太强大了
  • #25 · 2020-03-27 11:24:39
    看看
  • 九天网络(JiuDay) #26 · 2020-04-29 13:16:00
    本部分内容设定了隐藏,需要回复后才能看到,立即回复
  • #27 · 2020-05-11 13:50:52
    666666
  • 梦幻 #28 · 2020-05-12 17:39:22
    学习
  • kimi #29 · 2020-05-22 21:47:14
    学习
  • 找寻知音 #30 · 2020-06-08 14:35:44
    谢谢分享
  • 小黄人 18html.com #31 · 2020-06-08 15:11:44
    看看前端JS
  • iseeyo #32 · 2020-06-17 01:44:53
    优秀,支持下开发者!
  • Supr #33 · 2020-06-17 22:53:11
    这个插件在哪呢
  • csp6353963 #34 · 2020-06-24 03:07:51
    学习学习
  • 琉惗 #35 · 2020-06-24 10:02:35
    Supr还没上架呢,就是基于模块的导入导出给你大概看看效果
    image

    image
  • Supr #36 · 2020-06-27 11:07:30
    琉惗 你这个只是一张对应一个模块。如果有几十张不是要建立几十个模块???
  • 琉惗 #37 · 2020-06-30 15:59:44
    Supr这个是一个模块对应好多表,就跟你后台添加数据一样,当然,单表导入也支持,如果你会单表导入就可以用单表,不会就可以用模块导入去做,就跟你发布文章是一样,很简单,多选,下拉,以及多联动,复选框,这些都会自己判断,你只需要选择要导入的栏目跟导入的字段就可以
  • Supr #38 · 2020-07-01 21:56:36
    琉惗 一个模块 多张不同表 每张字段不同 这个可以?
  • maste #39 · 2020-07-02 09:29:16
    学习下
  • 好好活着 #40 · 2020-07-05 12:59:17
    学习下
  • kevin1995 #41 · 2020-07-08 10:38:31
    学习下
  • kevin1995 #42 · 2020-07-08 10:49:42
    学习下
  • 琉惗 #43 · 2020-07-08 14:16:58
    Supr可以啊
  • jinghuaai3 #44 · 2020-08-20 11:37:47
    学习了
  • jinghuaai3 #45 · 2020-08-20 13:04:39
    jinghuaai3 请问这个怎么安装,我卡在了在后台创建导入按钮了
  • 帝云网络 #46 · 2020-09-01 12:38:13
    你的导入导出插件不错
  • 琉惗 #47 · 2020-09-10 14:41:49
    jinghuaai3 放在模版里面
  • 李志杰 #48 · 2020-09-12 11:14:53
    学一学
  • 李志杰 #49 · 2020-09-12 13:58:31
    学一学
  • 有一点爱 #50 · 2020-09-26 03:12:22
    能不能导出表单数据
  • 流浪的乞丐 #51 · 2020-09-26 19:10:20
    学习
  • Mr.Wa #52 · 2020-10-20 10:54:48
    学习一下
  • xspwyl #53 · 2020-12-01 15:02:15
    刚接触 收藏 备用
  • 小白 #54 · 2020-12-07 15:25:11
    这个是导出模块数据的,可以单独导出表单数据么?
  • 小白 #55 · 2020-12-08 09:30:14
    丛林灰太狼 请问这个 census 文件夹是什么?
  • perweb #56 · 2021-01-11 15:47:30
    学习了
  • 菜鸟一枚 #57 · 2021-01-19 13:09:03
    这个牛皮了
  • 菜鸟一枚 #58 · 2021-01-19 18:46:45
    琉惗 请问
    {THEME_PATH}from/layui/layui.js
    这个文件该怎么写。。
  • 琉惗 #59 · 2021-02-07 23:49:34
    菜鸟一枚 引用layui文件,去layui官网下载一个然后放进去引用就行
  • lin818 #60 · 2021-02-20 17:47:18
    厉害,学习学习
  • KOK #61 · 2021-02-23 15:22:39
    学习学习,感谢分享!!!
  • ba123456 #62 · 2021-03-01 14:53:30
    学习下
  • ba123456 #63 · 2021-03-01 14:53:51
    学习下
  • KOK #64 · 2021-03-01 23:14:41
    牛逼,感谢楼主分享。。。。。。。。。
  • Keep #65 · 2021-04-14 09:16:28
    感谢楼主分享。。。。。。。。。
  • PHP学生 #66 · 2021-04-26 22:22:26
    学习学习
  • 胡银萍 #67 · 2021-05-17 17:51:24
    支持
  • niu #68 · 2021-06-12 15:49:58
    学习
  • 博瑞科技 #69 · 2021-08-13 10:40:54
    感谢楼主分享
  • 张先生 #70 · 2021-09-14 08:40:56
    学习学习
  • swcml #71 · 2021-09-23 14:15:27
    学习一下。。。。
  • swcml #72 · 2021-09-23 14:20:19
    学习学习
  • 清风 #73 · 2021-10-26 16:45:54
    请问这个怎么安装,我卡在了在后台创建导入按钮了
  • Rambo #74 · 2021-10-30 11:14:52
    做个标记 感谢楼主分享
  • baqi89757 #75 · 2021-12-02 14:56:04
    厉害,正在考虑写个导出,没想到有现成得例子,谢谢楼主
  • LandQ #76 · 2021-12-02 15:23:51
    厉害,学习学习
  • 小小白 #77 · 2021-12-18 20:19:16
    感谢楼主分享~
  • glovy #78 · 2021-12-29 09:28:16
    这个很牛看看啊
  • glovy #79 · 2021-12-29 09:30:35
    我回复了看不到js。不过还是很感谢楼主放出这么好的东西
  • phpcms #80 · 2021-12-30 12:56:23

    哈,这个牛逼,看下

  • phpcms #81 · 2021-12-30 13:02:03
    回复看看
  • lolian2 #82 · 2021-12-30 16:29:11
    学习下
  • 执筆丶写浮生 #83 · 2022-01-06 15:45:15
    来学习一下。。。。。
  • 执筆丶写浮生 #84 · 2022-01-06 16:10:14
    1111111111111111111111111111111111111
  • 393084942 #85 · 2022-01-17 00:46:46
    学习一下怎么使用
  • 草木人 #86 · 2022-01-27 14:16:42
    琉惗 请教下,你的PHP是放那个路径?文件名有要求没?
  • chaosoven #87 · 2022-02-15 16:04:29
    来学习一下
  • suovee #88 · 2022-03-03 16:47:22
    来学习一下
  • kakky #89 · 2022-03-04 19:24:00
    厉害了学习学习
  • 陈生生 #90 · 2022-03-09 11:31:00
    666,刚好需要
  • 18062075971 #91 · 2022-03-20 23:53:12
    学习分享感谢~
  • karas #92 · 2022-03-25 12:02:05
    厉害厉害 感谢楼主分享
  • leoburr #93 · 2022-04-01 00:05:33
    学习一下
  • glass #94 · 2022-05-30 10:00:56
    学习一下
  • tree #95 · 2022-08-17 17:51:37
    大神~学习下
  • 1139396362 #96 · 2022-08-18 08:50:29
    牛逼
  • biezhaoqiang0320 #97 · 2022-10-19 11:37:34
    琉惗 厉害厉害厉害厉害
  • 梦翔网络 #98 · 2022-10-23 09:21:01
    学习一下。正需要
  • 刘云海 #99 · 2022-10-24 23:34:51
    牛逼,感谢楼主分享。。。。。。。。。
  • user007 #100 · 2022-11-02 17:07:45
    学习学习,先插个眼
  • xiemoxiaoshao #101 · 2022-11-08 15:29:15
    厉害厉害!向你学习。
  • 632881002 #102 · 2022-11-12 23:03:46
    学习学习学习
  • tenfly #103 · 2022-11-29 11:26:37
    感谢楼主,看看
  • zealens #104 · 2023-01-18 16:13:14
    写的真好,感谢楼主
  • zealens #105 · 2023-01-18 16:19:20
    楼主,分享的真好,学习了
  • zealens #106 · 2023-01-18 20:09:10
    学习,很好,快成功了
  • jany2276 #107 · 2023-02-14 15:29:04
    学习下,感谢楼主分享
  • qaq #108 · 2023-03-20 09:44:25
    学习下学习下
  • 陈德显 #109 · 2023-05-31 15:38:28
    学习学习,如果所有模块通用就好了
  • 秉烛思 #110 · 2023-06-12 09:28:48
    大佬牛逼,学习了。。
  • 小豪子 #111 · 2023-06-13 20:34:28
    很好,学习下
  • 蜡笔小新 #112 · 2023-07-19 16:47:41
    谢谢分享,这个貌似挺强大的
  • 8834629 #113 · 2023-08-21 10:07:55
    真是个人才啊,谢谢
  • 开心果 #114 · 2023-10-09 15:06:53
    看着不错,先收藏
  • 开心果 #115 · 2023-10-09 16:11:48
    好像这边版本已经不支持现在新版本了,路径等等都对不上,打赏后文件内容那些也是对不上,希望楼主能更新一个新版本的,非常感谢
  • 开心果 #116 · 2023-10-09 16:33:45
    新版本的是否一样 琉惗
  • 开心果 #117 · 2023-10-09 16:34:38
    琉惗 新版本是否一样操作
  • afen06 #118 · 2023-10-27 12:04:29
    思路可以借鉴下,不难
  • 小昕 #119 · 2023-11-06 19:00:16
    学习下学习下学习下学习下
  • 小昕 #120 · 2023-11-06 21:34:46
    琉惗 牛逼,感谢楼主分享。。。。。。。。。
  • 木木木木 #121 · 2023-11-08 09:35:04
    琉惗 牛逼,感谢楼主分享。。。。。。。。。
  • 帝云网络-长期接单 #122 · 2023-11-24 21:46:15
    学习学习,感谢分享!!!
  • 创发 #123 · 2023-12-28 16:46:23
    这个插件非常好,值得学习了解一下
  • 1905874466 #124 · 2024-01-22 11:52:54
    不错 进来学习学习
  • mp4play #125 · 2024-02-14 11:39:39
    学习下,感谢楼主分享。
  • 赵大宝 #126 · 2024-04-11 09:24:05
    学一下一下看看
  • 秉烛思 #127 · 2024-05-15 10:37:07
    写的真好,感谢楼主
  • 如果你唱歌 #128 · 2024-05-15 11:51:36
    学习了,刚好用到
  • 赛诺工作室 #129 · 2024-07-23 00:27:16
    学习学习学习学习学习
  • 明煌网络 #130 · 2024-08-06 17:48:08
    学习下,,感谢分享!!!
  • 挖掘机 #131 · 2024-08-07 12:16:47
    学习下 ,感谢分享!!
  • nemoccc #132 · 2024-08-09 22:19:05
    哈,这个牛逼,看下
  • 哈哈哈哈哈哈 #133 · 2025-01-13 23:23:51
    来学习一下
  • 学习一下 #134 · 2025-01-25 09:19:19
    你的导入导出插件不错
  • Jerek杰瑞克 #135 · 2025-03-28 15:34:12
    看着不错,试试添加
  • Jerek杰瑞克 #136 · 2025-03-28 17:17:49
    琉惗 不知道PHP文件是放哪个文件夹,怎么命名
  • 我是米奇 #137 · 2025-03-29 17:12:33
    感谢楼主分享!
  • 风凌君 #138 · 2025-04-02 16:28:37
    看起来可以啊,学习学习
  • 大师在流浪 #139 · 2025-04-28 15:35:53
    看起来很牛,一定要学习学习
  • 张某某某 #140 · 2025-05-20 14:30:02
    能导出导入 看着很强大啊 学习学习
  • 张某某某 #141 · 2025-05-20 14:39:20
    能导出导入,正好需要学习学习
  • miniidea #142 · 2025-07-10 22:52:59
    学习下~!学习下~
  • miniidea #143 · 2025-07-12 11:50:40
    琉惗 学习下~!学习下~!
  • miniidea #144 · 2025-07-12 16:53:41
    张某某某
  • jackyean #145 · 2025-07-13 10:37:05

    牛逼,感谢楼主分享。。。。。。。。。

  • 石晋华 #146 · 2025-08-01 22:22:01
    牛逼,感谢楼主分享。。。。。。。。。
  • 小海哥 #147 · 2025-11-03 10:14:54
    学习了,学习了
  • 你好CMS #148 · 2025-11-11 14:51:15
    刚接触 收藏 备用
  • gag888 #149 · 2025-11-24 10:22:32
    学习一下 感谢楼主分享。。。。。。。。。
  • 传播易 #150 · 2026-01-15 09:55:25
    感谢楼主分享,太牛了
  • 小五df #151 · 2026-03-25 18:59:35
    学习来了,想看看
  • 小飞鸡。 #152 · 2026-07-20 09:06:23
    学习学习,感谢分享!!!

迅睿系统漏洞

GeoSeo收录宝
GeoSeo收录宝(2026-09-01)
升级 ai智能发布功能 升级 支持8国语言后端设置和前端输出功能 ...
Word发布批量上传
Word发布批量上传(2026-08-31)
版本覆盖问题重发
多语言翻译Seolang
多语言翻译Seolang(2026-08-31)
新增 LLM 大模型对话翻译模块 配置层强类型化重构 URL 模...
自定义存储
自定义存储(2026-08-30)
同步服务器端通用版实现,统一管理端、CMS 端和浏览器直传的提示与错...
GeoSeo工具箱
GeoSeo工具箱(2026-08-29)
新增 bing推送 新增 IndexNow推送 新增 baidu...
外贸多语言建站
外贸多语言建站(2026-08-27)
新增阿里云专业版入口 新增阿里云自动识别字符格式
Querylist渐进式采集
Querylist渐进式采集(2026-08-26)
增加范围截取规则
实时任务
实时任务(2026-08-26)
补充并整理完整使用说明、历史版本更新日志,统一帮助页样式。