美文网首页
SpringMVC上传Excel文件

SpringMVC上传Excel文件

作者: lxqfirst | 来源:发表于2018-01-25 10:26 被阅读0次

    利用POI进行Excel的文件解析,maven依赖如下

    <dependency>
       <groupId>org.apache.poi</groupId>
       <artifactId>poi</artifactId>
       <version>${apache.poi.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>${apache.poi.ooxml.version}</version>
    </dependency>
    

    配置SpringMvc文件上传解析器

        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <!-- 设定默认编码 -->
            <property name="defaultEncoding" value="UTF-8"></property>
            <!-- 设定文件上传的最大值为5MB-->
            <property name="maxUploadSize" value="5242880"></property>
            <!-- 设定文件上传时写入内存的最大值,如果小于这个参数不会生成临时文件,默认为10240 -->
            <property name="maxInMemorySize" value="40960"></property>
            <!-- 延迟文件解析 -->
            <property name="resolveLazily" value="true"/>
        </bean>
    

    写上传文件的Controller

    public BaseResponse upload(MultipartFile file) throws Exception {
            //检验忽略
             ...
    
            //获取文件后缀名
            String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(Constant.DOT) + 1);
            Workbook wb = null;
            //对于2003的版本,用HSSFWorkbook处理
            if (Constant.EXCEL_2003_SUFFIX.equals(suffix)) {
                wb = new HSSFWorkbook(file.getInputStream());
            //对于2007以及后续版本,用XSSFWorkbook进行处理
            } else if (Constant.EXCEL_2007_SUFFIX.equals(suffix)) {
                wb = new XSSFWorkbook(file.getInputStream());
            } else {
                return buildResponse(CommonCodeEnum.FILE_SUFFIX_NO_VALID, null);
            }
    
            List<Long> ids = Lists.newArrayList();
            try {
                //获取第一个sheet,可以利用循环获取每个sheet的内容
                Sheet sheet = wb.getSheetAt(0); 
    
                //第一行是标题,跳过
                for (int i = 1; i < sheet.getLastRowNum() + 1; i++) {
                    Row row = sheet.getRow(i);
                    if (row != null) {
                        //获取第一列的内容
                        Cell cell = row.getCell(0);
                        Long id = (long) cell.getNumericCellValue();//数字类型
                        id.add(poiId);
                    }
                }
            } catch (Exception e) {
                return buildResponse(CommonCodeEnum.FILE_CONTENT_NO_VALID, null);
            }
    
            //后续处理忽略
            ...
        }
    

    可以利用postman进行测试

    image.png

    相关文章

      网友评论

          本文标题:SpringMVC上传Excel文件

          本文链接:https://www.haomeiwen.com/subject/ecgmaxtx.html