关于excel导入使用poi遇到的坑

首先呢excel导入前端需要一个页面来上传文件,后端需要解析上传的文件,然后在根据需要得到解析后的数据,进行数据操作。

1 前端html



2  js代码


        $(document).ready(function(){
            $("#btn").click(function(){ if(checkData()){
                $('#form1').ajaxSubmit({
                    url:'uploadExcel/ajax',
                    dataType: 'text',
                    success: resutlMsg,
                    error: errorMsg
                });
                function resutlMsg(msg){
                    alert(msg);
                    $("#upfile").val("");
                }
                function errorMsg(){
                    alert("导入excel出错!");
                }
            }
            });
        });

        //JS校验form表单信息
        function checkData(){
            var fileDir = $("#upfile").val();
            var suffix = fileDir.substr(fileDir.lastIndexOf("."));
            if("" == fileDir){
                alert("选择需要导入的Excel文件!");
                return false;
            }
            if(".xls" != suffix && ".xlsx" != suffix ){
                alert("选择Excel格式的文件导入!");
                return false;
            }
            return true;
        }

前端的代码大部分都是大同小异没什么好说的,注意一点关于form表单提交的时候的问题,如果使用ajax就用下面的方法,不然直接在action上面写就行。

3后端control层代码

关于excel导入使用poi遇到的坑_第1张图片

这样写代码其实是因为上传excel后特殊原因需要解析两次,poi的坑会自动关闭文件输入流,第一次读取的时候读取得到第二次读取不到。这样的方法写有点low可是网上的如下图所示:

增加一个pushbackInputStream回滚流,然而并没什么用,断点中 inStr中的close属性依旧为true无效。所以用最土的方法再来了一次,如果有好的办法可以评论告诉我。

关于excel导入使用poi遇到的坑_第2张图片

 

你可能感兴趣的:(关于excel导入使用poi遇到的坑)