ThinkPHP中使用PHPExcel导入Excel

下载PHPEXCEL 后放到项目里。

 

 public function InExcel() {
        //设定缓存模式为经gzip压缩后存入cache(PHPExcel导入导出及大量数据导入缓存方式的修改 ) 
        $cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip;
        $cacheSettings = array();
        PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);

        $objPHPExcel = new PHPExcel();
        //读入上传文件
        if ($_POST) {
            $objPHPExcel = PHPExcel_IOFactory::load($_FILES["inputExcel"]["tmp_name"]);
            //内容转换为数组 
            $indata = $objPHPExcel->getSheet(0)->toArray();
            //print_r($indata);
            //excel  sheet个数
            //echo $objPHPExcel->getSheetCount();
            //把数据新增到mysql数据库中
            $arr = array();
            $j = 0;
            $model = D('goods_unit');
            //根据具体情况修改
            if (count($indata) == 1) {
                //根据具体情况修改
                $arr[0] = array("hang" => 0, "Cause" => "无记录!");
                $this->assign('errorss', $arr);
                $list = $this->menu();
                $this->assign('menu', $list);
                $this->display('Base:baseunit', 'utf-8');
            } else {
                if ($indata[0][0] == "单位名称") {
                    for ($i = 1; $i < count($indata); $i++) {
                        $all['UnitName'] = $indata[$i][0];
                        $w = $model->where($all)->select();
                        if ($w !== null) {
                            $arr[$j] = array("hang" => $i + 1, "Cause" => "该单位已存在");
                            $j++;
                            continue;
                        }
                        $result = $model->add($all);
                        if (false == $result) {
                            $arr[$j] = array("hang" => $i + 1, "Cause" => "写入单位表时失败");
                            $j++;
                            continue;
                        }
                    }
                    if ($arr == null) {
                        $arr[0] = array("hang" => 0, "Cause" => "导入Excel成功");
                    }
                    $this->assign('errorss', $arr);
                    $list = $this->menu();
                    $this->assign('menu', $list);
                    $this->display('Base:baseunit', 'utf-8');
                } else {
                    $arr[0] = array("hang" => 0, "Cause" => "上传文件格式不正确!");
                    $this->assign('errorss', $arr);
                    $list = $this->menu();
                    $this->assign('menu', $list);
                    $this->display('Base:baseunit', 'utf-8');
                }
            }
        } else {
            $arr[0] = array("hang" => 0, "Cause" => "服务器未检测到有上传文件!");
            $this->assign('errorss', $arr);
            $list = $this->menu();
            $this->assign('menu', $list);
            $this->display('Base:baseunit', 'utf-8');
        }
    }

 

  以下是前台代码

<script> 
   $("#ProjectToolbar").on('click', "a[name='haveExcel']", function(data) {
        $w= $('#mk').html().trim();
        if($w=="选择上传文件"){
            $("#inputFile").click();
        }else{
            if($('#inputFile').val()!=null){
                $("#submitexcel").click();
            }else{
                alert("还未选择文件");
                $('#mk').html("选择上传文件");
            }
        }
    });
          
    function dohtml() { 
        $w= $('#mk').html().trim();
        if($w=="选择上传文件"){
            $('#mk').html("上传所选文件");
        }else{
            $('#mk').html("选择上传文件");
        }
    }
</script>
<div id="ProjectToolbar">
   <form action="__URL__/InExcel" id="formExcel" method="post" enctype="multipart/form-data"> 
        <input type="file" name="inputExcel" id="inputFile" style="display:none;"  onchange="dohtml()">
        <a name="haveExcel" id="mk"  href="javascript:;">选择上传文件</a>
        <input type="submit" name="submite" id="submitexcel" value="提交"  style="display:none;" />
   </form> 
</div>

  用ajax不知道怎么做。

 

posted @ 2014-05-09 11:02  Aroundight  阅读(267)  评论(0编辑  收藏  举报