struts2+bootstrap-fileinput+poi 实现读取excel文件到数据库

Posted StringXy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了struts2+bootstrap-fileinput+poi 实现读取excel文件到数据库相关的知识,希望对你有一定的参考价值。

//js代码
function
initUpload(){ $("#uploadfile").fileinput({ language: ‘zh‘, //设置语言 uploadUrl: $("body").attr("data-url")+"/permission/roleUpload!upload.action", //上传的地址 allowedFileExtensions: [‘xls‘, ‘xlsx‘],//接收的文件后缀 //uploadExtraData:{"id": 1, "fileName":‘123.mp3‘}, uploadAsync: true, //默认异步上传 showUpload: true, //是否显示上传按钮 showRemove : true, //显示移除按钮 showPreview : true, //是否显示预览 showCaption: false,//是否显示标题 browseClass: "btn btn-primary", //按钮样式 dropZoneEnabled: false,//是否显示拖拽区域 //minImageWidth: 50, //图片的最小宽度 //minImageHeight: 50,//图片的最小高度 //maxImageWidth: 1000,//图片的最大宽度 //maxImageHeight: 1000,//图片的最大高度 //maxFileSize: 0,//单位为kb,如果为0表示不限制文件大小 //minFileCount: 0, maxFileCount: 10, //表示允许同时上传的最大文件个数 enctype: ‘multipart/form-data‘, validateInitialCount:true, previewFileIcon: "<i class=‘glyphicon glyphicon-king‘></i>", msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}!", }); }

jsp代码

<!-- 文件上传 -->

    <label class="control-label">请选择要导入的Excel文件:</label>
<input type="file" name="uploadFiles" id="uploadfile"  class="file-loading" />
  <s:fielderror></s:fielderror>

 

后台action代码

    public String upload(){
        String savePath=ServletActionContext.getServletContext().getRealPath("/static/upload/");
        
        File uploadDir=new File(savePath);
        if(!uploadDir.exists()){
            uploadDir.mkdirs();
        }
        SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
        String ymd=sdf.format(new Date());
        savePath+="/"+ymd+"/";
        File dirFile=new File(savePath);
        if(!dirFile.exists()){
            dirFile.mkdirs();
        }
        if(this.uploadFiles!=null){
            for(int i=0;i<uploadFiles.size();i++){
                String fileExt=uploadFilesFileName.get(i).substring(uploadFilesFileName.get(i).lastIndexOf(".")+1).trim().toLowerCase();
                List<String>arr=Arrays.asList(extMap.split(","));
                if(!arr.contains(fileExt)){
                    super.addActionError(this.uploadFilesFileName.get(i)+"文件类型错误!只允许"+extMap+"格式。");
                    continue;
                }
                SimpleDateFormat sdfForFileName=new SimpleDateFormat("yyyyMMddHHmmss");
                String newName=sdfForFileName.format(new Date())+"_"+new Random().nextInt(1000)+"."+fileExt;
                File destFile=new File(dirFile,newName);
                try {
                    FileUtils.copyFile(uploadFiles.get(i), destFile);
                    List<List<String>>roles=ExcelUtil.readXlsx(savePath+newName);
                    for(List<String> row:roles){
                        Role role=new Role();
                        role.setRoleName(row.get(1));
                        rolebiz.insert(role);
                    }
                } catch (Exception e) {
                    super.addActionError(this.uploadFilesFileName.get(i)+"上传失败!"+e.getMessage());
                    
                    continue;
                }
            }
        }
        System.out.println("保存路径:"+savePath);
        return SUCCESS;
    }

后台POI解析excel代码

public class ExcelUtil {

    
    public static List<List<String>> readXlsx(String path){
        List<List<String>> result=new ArrayList<List<String>>();
        try {
            InputStream input=new FileInputStream(path);
            XSSFWorkbook workbook=new XSSFWorkbook(input);
            
            for(XSSFSheet xssfSheet:workbook){
                if(xssfSheet==null){
                    continue;
                }
                for(int rowNum=1;rowNum<=xssfSheet.getLastRowNum();rowNum++){
                    XSSFRow row=xssfSheet.getRow(rowNum);
                    int minCellNum=row.getFirstCellNum();
                    int maxCellNum=row.getLastCellNum();
                    List<String>rowList=new ArrayList<String>();
                    for(int i=minCellNum;i<maxCellNum;i++){
                        XSSFCell cell=row.getCell(i);
                        if(cell==null){
                            continue;
                        }
                        rowList.add(cell.toString());
                    }
                    result.add(rowList);
                }
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return result;
    }
    
    public static List<List<String>> readXls(String path){
        List<List<String>> result=new ArrayList<List<String>>();
        try {
            InputStream input=new FileInputStream(path);
            HSSFWorkbook workbook=new HSSFWorkbook(input);
            for(int numSheet=0;numSheet<workbook.getNumberOfSheets();numSheet++){
                HSSFSheet sheet=workbook.getSheetAt(numSheet);
                if(sheet==null){
                    continue;
                }
                for(int rowNum=1;rowNum<=sheet.getLastRowNum();rowNum++){
                    HSSFRow row=sheet.getRow(rowNum);
                    int minCellNum=row.getFirstCellNum();
                    int maxCellNum=row.getLastCellNum();
                    List<String> rowList=new ArrayList<String>();
                    for(int i=minCellNum;i<maxCellNum;i++){
                        HSSFCell cell=row.getCell(i);
                        if(cell==null){
                            continue;
                        }
                        rowList.add(getStringVal(cell));
                    }
                            result.add(rowList);
                }
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return result;
    }

    private static String getStringVal(HSSFCell cell) {
        switch (cell.getCellType()) {
        case Cell.CELL_TYPE_BOOLEAN:
            return cell.getBooleanCellValue() ? "TRUE" : "FALSE";
        case Cell.CELL_TYPE_FORMULA:
            return cell.getCellFormula();
        case Cell.CELL_TYPE_NUMERIC:
            cell.setCellType(Cell.CELL_TYPE_STRING);
            return cell.getStringCellValue();
        case Cell.CELL_TYPE_STRING:
            return cell.getStringCellValue();
        default:
            return null;
        }
    }

}

 






以上是关于struts2+bootstrap-fileinput+poi 实现读取excel文件到数据库的主要内容,如果未能解决你的问题,请参考以下文章

Struts2标签库

Struts2框架使用之struts2的验证框架

Struts2学习笔记

Struts2学习笔记

struts2系列:struts2参数传递错误struts2的输入错误验证

Struts2学习笔记二:Struts2重定向和转发配置Struts2获取表单参数域对象