zoukankan      html  css  js  c++  java
  • Ajax上传.xlsx文件并解析

    1、首先必须配置bean

    <bean id="multipartResolver"
              class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <property name="maxUploadSize" value="10485760"/>
            <property name="resolveLazily" value="true"/>
            <property name="maxInMemorySize" value="4096"/>
            <property name="defaultEncoding" value="UTF-8"/>
        </bean>
    

    2、ftl页面代码

    <form id="fileForm" method="post" enctype="multipart/form-data">
            <input type="text" id="someText" name="someText">
            <input type="file" name="file" id="file">
    </form>
    

    3、js代码

    var someText= $("#someText").val();
    var file = $("#file")[0].files[0]; //获取标签值好像函数与浏览器不兼容,网上的大多是通过$("#file").files[0]获取,          
                          我这里必须通过$("#file")[0].files[0]才能获取到值        
    var formData = new FormData();    
    formData.append('someText', someText);
    formData.append('file', file);
    
    $.ajax({
                 type:"post",
                 url:'请求路径',
                 data:formData,
                 dataType:'json',
                 cache:false,
                 contentType: false, 
                 processData: false,
                 success: function(data) {
             	// 结果处理
             			}
            });    
    

    4、后台代码

    @RequestMapping(value = "路径", method = { RequestMethod.GET, RequestMethod.POST })
    @ResponseBody
    public Object uploadFile(@RequestParam(value = "someText", required = false) String someText, 
    @RequestParam(value = "file", required = false) MultipartFile file, 
    HttpServletRequest request) {//required = false才能获取到值            
    	XSSFWorkbook workbook = new XSSFWorkbook(file.getInputStream());
      XSSFWorkbook workbook = new XSSFWorkbook(file.getInputStream());        
      for (int numSheet = 0; numSheet < workbook.getNumberOfSheets(); numSheet++) {
           XSSFSheet sheetAt = workbook.getSheetAt(numSheet);
           if (sheetAt == null) {
               continue;
               }
           // 循环行Row
           for (int rowNum = 0; rowNum <= sheetAt.getLastRowNum(); rowNum++) {
                XSSFRow row = sheetAt.getRow(rowNum);
                if (row == null) {
                    continue;
                }
                // 循环列Cell
          for (int cellNum = 0; cellNum <= row.getLastCellNum(); cellNum++) {
              //在此可进行获取单元格值并入库
    										getValue(row,cellNum);
           	}
          		}
       	}  
    }   
    //单元格类型转换并获取值
    private String getValue(XSSFRow row, int cellNum) {
            XSSFCell cell = row.getCell(cellNum);
            if (cell.getCellType() == cell.CELL_TYPE_BOOLEAN) {
                return String.valueOf(cell.getBooleanCellValue());
            } else if (cell.getCellType() == cell.CELL_TYPE_NUMERIC) {
                return String.valueOf((int) cell.getNumericCellValue());
            } else {
                return String.valueOf(cell.getStringCellValue()).equals("") ? "" : String
                        .valueOf(cell.getStringCellValue());
            }
    }

                       

      

  • 相关阅读:
    小米9一直无限重启是怎么办
    发现一个大神做了一个ROS-ROUTEROS的中文手册中文使用说明书
    浅谈CN2 GIA和CN2 GT线路的区别
    本地ROS多线访问同一个服务器的IP,比如阿里云的IP,创建冗余线路
    syslog之三:建立Windows下面的syslog日志服务器
    增值税专用发票“抵扣联”和“发票联”丢失怎么办
    在线播放 4K 内容的需要多少带宽?
    戴尔R640服务器用H740P配置阵列
    搞微服务用阿里开源的 Nacos 真香啊!
    保持ssh不自动断开
  • 原文地址:https://www.cnblogs.com/yiyibinbin/p/9467926.html
Copyright © 2011-2022 走看看