layui实现php+ajax上传excel表格功能

2023-09-06实例代码
139

php layui实现ajax上传excel表格到系统中,下面小编为您讲解实现方法:
前端代码:
    <div class="layui-input-inline">
        <div class="layui-upload">
            <button type="button" name="myfile" class="layui-btn" id="myfile"><i class="layui-icon"></i>上传文件</button>
        </div>
    </div>

<script type="text/javascript">
    layui.use(['form','upload'],function(){

        var form=layui.form;
        var upload=layui.upload;

        upload.render({ //允许上传的文件后缀
            elem: '#myfile'
            ,url: "{:url('import')}"
            ,accept: 'file' //普通文件
            ,exts: 'xls|excel|xlsx'
            ,done: function(res){
                if(res == true){
                    layer.msg('开通成功',{icon:6});
                }else{
                    layer.msg('解析失败',{icon:5});
                }
            }
        });
    });

</script>
PHP端代码:
    public function import()
    {
        //接收上传文件
        $file = $_FILES;
        if (!$file) {
            return '缺少file';
        }
        $filename = $file['file']['tmp_name'];
        //调用导入excel方法
        $data = Base::instance()->importExcel($filename);
        $result_data = [];
        foreach ($data as $k => $v){
            if ($k === 0){

            }else{
                foreach ($v as $kk => $vv){
                    $result_data[$k-1][$data[0][$kk]] = $vv;
                }
            }
        }
    }
base类(php需安装phpexcel扩展):
class Base extends Service
{


    //excel文件导入
    public function importExcel($file){
        include(__DIR__.'/../../../vendor/PHPExcel/Classes/PHPExcel.php');
        $cacheMethod = \PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;
        $cacheSettings = array('memoryCacheSize' => '16MB');
        \PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);//文件缓存
        //当前空间不用\,非当前空间要加\
        $PHPExcel = new \PHPExcel();//创建一个excel对象
        $PHPReader = new \PHPExcel_Reader_Excel2007(); //建立reader对象,excel—2007以后格式
        if (!$PHPReader->canRead($file)) {
            $PHPReader = new \PHPExcel_Reader_Excel5();//建立reader对象,excel—2007以前格式
            if (!$PHPReader->canRead($file)) {
                $msg = '不是excel格式文件';
                //$this->apiReturn(303,$msg);
                return '不是excel格式文件';
            }
        }
        $PHPExcel = $PHPReader->load($file); //加载excel对象
        $sheet = $PHPExcel->getSheet(0); //获取指定的sheet表
        $rows = $sheet->getHighestRow();//行数
        $cols = $sheet->getHighestColumn();//列数

        $data = array();
        for ($i = 1; $i <= $rows; $i++){ //行数是以第1行开始
            $count = 0;
            for ($j = 'A'; $j <= $cols; $j++) { //列数是以A列开始
                $value = $sheet->getCell($j . $i)->getValue();
                if ($value) {
                    $data[$i - 1][$count] = (string)$sheet->getCell($j . $i)->getValue();
                    $count += 1;
                }
            }
        }
        return $data;
    }

}
 
The End

相关推荐

layui后台布局实例代码
layui后台布局的实例代码,以下是详细代码: !DOCTYPE htmlhtmlhead meta charset="utf-8" meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" titlelayout 后台大布局 - Layui/title link rel="stylesheet" ...
2025-10-15 实例代码
68

LayUI登录页面页设计实例
实例代码如下: !DOCTYPE htmlhtml lang="en" head meta charset="utf-8" link rel="stylesheet" href="layui/css/layui.css" style type="text/css" .container{ width: 420px; height: 320px; min-height: 320px; max-height: 320px; position: absolute; t...
2025-04-13 实例代码
234

layui实现带清除按钮的输入框
layui实现带清除按钮的输入框,首先html文件如下: !DOCTYPE htmlhtmlhead meta charset="utf-8" meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" title测试 - layui/title link rel="stylesheet" href="layui/css/lay...
2024-12-31 实例代码
200

input file上传图片设置的实例代码
input file上传图片设置的实例代码 div纯input与type/div input type="file" div指明需要图片/div input type="file" accept='image/*' div指明需要多张图片/div input type="file" multiple accept='image/*' div指明调用摄像头获取图片/div input type="fil...
2024-12-30 实例代码
133

layui下拉多选框xm-select.js插件的使用
创建容器 xm-select-demo,选择容器 隐藏赋值取值表单; div id="selected_box" class="layui-input-inline xm-select-demo" style="width:150px;"input type="hidden" id="poi_category_id"/div 异步获取代码 //获取分类; $.ajax({ type: 'get', url: "./ap...
2024-12-23 实例代码
99

layui实现根据table数据判断按钮显示情况的方法
可以根据table的数据实现判断toolbar按钮的显示状态和情况 script type="text/html" id="barDemo" {{# if(d.status ==0){ }} a class="layui-btn layui-btn-mini" lay-event="examine"查看/a a class="layui-btn layui-btn-mini" lay-event="edit"编辑/a a cl...
2024-12-13 实例代码
121