文档章节

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

xyyyy
 xyyyy
发布于 2017/03/20 16:54
字数 648
阅读 83
收藏 0
//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;
        }
    }

}

 

本文转载自:http://www.cnblogs.com/staticxy/p/6110521.html

上一篇: SVN代码冲突
下一篇: POI shiftRows方法
xyyyy
粉丝 0
博文 17
码字总数 0
作品 0
渝中
程序员
私信 提问
一次代码重构之旅---Java读取Excel(一)

最近工作需要一个读取excel文件的工具,结合网络资源写了一个工具类,初步实现了功能。好,老样子,先描述一下业务需求。(基于JFinal2.1版本) 读取excel文件,双方约定此文件模板内容,具体...

TheLostman
2016/01/29
192
0
基于dbunit进行mybatis DAO层Excel单元测试

DAO层测试难点 可重复性,每次运行单元测试,得到的数据是重复的 独立性,测试数据与实际数据相互独立 数据库中脏数据预处理 不能给数据库中数据带来变化 DAO层测试方法 使用内存数据库,如H...

llljj96
2017/05/23
0
0
借助云开发轻松实现后台数据批量导出丨实战

小程序导出数据到excel表,借助云开发后台实现excel数据的保存 我们在开发小程序的过程中,可能会有这样的需求:如何将云数据库里的数据批量导出到excel表里? 这个需求可以用强大的云开发轻...

腾讯云云开发
09/10
0
0
NPOI操作excel——利用反射机制,NPOI读取excel数据准确映射到数据库字段

整体博文已迁移到博客园:http://www.cnblogs.com/csqb-511612371/p/4891492.html 其实需求很明确,就是一大堆不一样的excel,每张excel对应数据库的一张表,我们需要提供用户上传excel,我们...

彩色铅笔
2014/07/18
3.4K
0
python django框架 渲染和ajax表单提交周报表

一. 实际需求 之前这篇文章kettle-自动生成周报 是使用java开源ETL工具kettle实现,正常情况下是每天写工作完成情况到Excel表,每周五定时任务启动读取Excel日志写入数据库,再读取数据库内容按...

程程同学
2017/11/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

领域驱动中的“贫血症和失忆症” --实践领域驱动--原文

贫血症严重危害着人类健康,并且伴随有危险的副作用。当贫血领域对象被首次提出来时,它并不是一个博得赞美的词汇,它描述的是一个缺少内在行为领域对象。奇怪的是,人们对于贫血领域对象的态...

还仙
17分钟前
4
0
条码打印软件中标签预览正常打印无反应怎么解决

在使用条码打印软件制作标签时,有客户反馈,标签打印预览正常的,但是打印无反应,咨询是怎么回事?今天针对这个情况,可以参考以下方法进行解决。 一、预览正常情况下,打印没反应 (1)在条码...

中琅软件
27分钟前
4
0
判断字符串的时候

判断字符串的时候一定把常量房前边, //报警程度 String leve = vo.getDeviceAlertDeal().getWarnLevel(); if(("0").equals(leve)) { row.add("无报警"); }else if(("1").equals(leve)) { ro......

简小姐
28分钟前
5
0
Linux maven3.6.2 install

PS:安装 maven 之前请先安装 jdk 1.安装 wget 命令(安装过就不用了) yum -y install wget 2.寻找需要的 maven 版本 https://maven.apache.org/download.cgi 3.进入 /var/local 文件夹 cd...

东方神祇
30分钟前
4
0
Tomcat源码分析二:先看看Tomcat的整体架构

Tomcat源码分析二:先看看Tomcat的整体架构 Tomcat架构图 我们先来看一张比较经典的Tomcat架构图: 从这张图中,我们可以看出Tomcat中含有Server、Service、Connector、Container等组件,接下...

flygrk
33分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部