【转载自】http://blog.csdn.net/u011563331/article/details/51322523

通过解析excel,将数据存储到数据库中。现在将方法保存下来。

使用的是apache的poi组件。

public List<String[]> paseUserStoryFile(MultipartFile file) {
        List<String[]> list = new ArrayList<String[]>();
        try {
            POIFSFileSystem pois = new POIFSFileSystem(file.getInputStream());
            //新建WorkBook
            HSSFWorkbook wb = new HSSFWorkbook(pois);
            //获取Sheet(工作薄)总个数
            int sheetNumber = wb.getNumberOfSheets();
            for (int i = 0; i < sheetNumber; i++) {
                //获取Sheet(工作薄)
                HSSFSheet sheet = wb.getSheetAt(i);
                //开始行数
                int firstRow = sheet.getFirstRowNum();
                //结束行数
                int lastRow = sheet.getLastRowNum();
                //判断该Sheet(工作薄)是否为空
                boolean isEmpty = false;
                if(firstRow == lastRow){
                    isEmpty = true;
                }
                 
                if(!isEmpty){
                    for (int j = firstRow+1; j <= lastRow; j++) {
                        //获取一行
                        HSSFRow row = sheet.getRow(j);
                        //开始列数
                        int firstCell = row.getFirstCellNum();
                        //结束列数
                        int lastCell = row.getLastCellNum();
                        //判断该行是否为空
                        String[] value = new String[lastCell]; 
                        if(firstCell != lastCell){
                            for (int k = firstCell; k < lastCell; k++) {
                                
                                
                                
                                //获取一个单元格
                                HSSFCell cell = row.getCell(k);
                                Object str = null;
                                //获取单元格,值的类型
                                int cellType = cell.getCellType();
                                
                                if(cellType == 0){
                                    str = cell.getNumericCellValue();
                                }else if(cellType == 1){
                                    str = cell.getStringCellValue();
                                }else if(cellType == 2){
                                }else if(cellType == 4){
                                    str = cell.getBooleanCellValue();
                                }
                              value[k] = (String) str;
                            }
                             
                        }
                        //每一行循环完对应的就是一个用户故事的所有属性全部拿到
                        list.add(value);  
                    }
                     
                }
                 
            }
        } catch (IOException e) {
            
            e.printStackTrace();
        }
        return list;
    }

【转】上传并解析excel的更多相关文章

  1. springboot实现上传并解析Excel

    添加pom依赖 <!-- excel解析包 --> <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> ...

  2. 如何实现批量上传----------Java解析excel

    一.引子 在web平台开发中仅经常会遇到一下需要批量的问题,通常得做法是使用excel上传,下面主要介绍一下在实际开发中到的实例. 二.准备工作 1.需要导入的jar包(主要用到poi包) (1)po ...

  3. IT轮子系列(六)——Excel上传与解析,一套代码解决所有Excel业务上传,你Get到了吗

    前言 在日常开发当中,excel的上传与解析是很常见的.根据业务不同,解析的数据模型也都不一样.不同的数据模型也就需要不同的校验逻辑,这往往需要写多套的代码进行字段的检验,如必填项,数据格式.为了避免 ...

  4. java 文件上传与解析(excel,txt)

    excel上传与解析 https://blog.csdn.net/zsysu_it/article/details/79074067 txt解析 https://blog.csdn.net/CSDNw ...

  5. 基于BootStrap的initupload()实现Excel上传和获取excel中的数据

    简单说明:后边要做exl解析(还没做呢),所以先有一个excel的的上传以及获取excel中的数据,展示出来. 代码: //html代码 <div class="btn-group&q ...

  6. php文件上传代码解析

    php文件上传代码解析 is_uploaded_file()  //函数判断指定的文件是否是通过 HTTP POST 上传的,返回一个布尔值. $_FILES['upfile']['tmp_name' ...

  7. Web攻防系列教程之文件上传攻防解析(转载)

    Web攻防系列教程之文件上传攻防解析: 文件上传是WEB应用很常见的一种功能,本身是一项正常的业务需求,不存在什么问题.但如果在上传时没有对文件进行正确处理,则很可能会发生安全问题.本文将对文件上传的 ...

  8. springMVC:为MultipartFilte配置了上传文件解析器,报错或不能使用

    一.问题描述为支持restful风格请求,并且应对可能上传文件的情况,需要在配置hiddenHttpMethodFilter过滤器之前配置MultipartFilter.目的是让MultipartFi ...

  9. java将Excel文件上传并解析为List数组

    前端 //导入excel文件 layui.use('upload', function() { var upload =layui.upload; //指定允许上传的文件类型 var uploadIn ...

随机推荐

  1. 一些Razor语法

    Layout asp.net mvc中的一些子视图忽然不行了,点击主视图后发现没有弹出来. 通过浏览器调试,发现打开子视图时,加载了大量的JS,CSS等.真奇怪啊,这些都是在主视图加载的啊,怎么子视图 ...

  2. 【codevs1306】广播操的游戏

    求字符串内的非空子串的数量 后缀数组!!! #include<algorithm> #include<cstdlib> #include<cstring> #inc ...

  3. Delphi中WebBrowser控件打开部分网站报"Invalid floating point operation”解决

    Delphi中WebBrowser控件打开部分网站报"Invalid floating point operation”解决 EmbeddedWBWebBrowserDelphi  最近用E ...

  4. HTTP要点概述:六,HTTP报文

    一,HTTP报文: 用于HTTP交互的信息称为HTTP报文.请求端(客户端)的HTTP报文叫做请求报文,响应端(服务器)的叫做响应报文.HTTP报文本身是由多行(用CR+LF换行)数据构成的字符串文本 ...

  5. 查看jvm常用命令

    jinfo:可以输出并修改运行时的java 进程的opts. jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号. jstat:一个极强 ...

  6. HDU1052Tian Ji -- The Horse Racing

    Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (J ...

  7. YTU 2626: B 统计程序设计基础课程学生的平均成绩

    2626: B 统计程序设计基础课程学生的平均成绩 时间限制: 1 Sec  内存限制: 128 MB 提交: 427  解决: 143 题目描述 程序设计基础课程的学生成绩出来了,老师需要统计出学生 ...

  8. 【HDU 2157】 How Many Ways??

    [题目链接] 点击打开链接 [算法] 设A[i][j]为走一条边,从i走到j的方案数 C[i][j]为走两条边,从i走到j的方案数,显然有 : C = A * A = A^2 C'[i][j]为走三条 ...

  9. bzoj 1657: [Usaco2006 Mar]Mooo 奶牛的歌声【单调栈】

    先考虑只能往一边传播,最后正反两边就行 一向右传播为例,一头牛能听到的嚎叫是他左边的牛中与高度严格小于他并且和他之间没有更高的牛,用单调递减的栈维护即可 #include<iostream> ...

  10. bzoj 1653: [Usaco2006 Feb]Backward Digit Sums【dfs】

    每个ai在最后sum中的值是本身值乘上组合数,按这个dfs一下即可 #include<iostream> #include<cstdio> using namespace st ...