Java上传Excel文件前后台实现,前台使用angular

HTML代码:

隐藏文件上传标签,点击上传按钮调用JS中的importGoodsStore()方法。

<button class="btn m-b-xs  btn-primary m-r-sm" data-ng-click="importGoodsStore()">上传</button>
<input type="file" data-ng-model="file" name="file" onchange="angular.element(this).scope().fileChangeEvent()" id="file" style="display:none">

JS代码:

调用importGoodsStore()方法,执行HTML中id为file的点击方法,上传读取文件传入后台等待返回,返回无论对错清空file文件,使之可以进行二次上传。

    
    //上传
    $scope.importGoodsStore=function(){
    	var value=document.getElementById("file").click();
    }
    
    //上传实现
    $scope.fileChangeEvent=function () {
	//判断上传控件的选定是否为空,空则返回
        if (document.getElementById("file").files.length == 0) return;
    	var fileObj = document.getElementById("file").files[0];
        // 上传的路径
    	var FileController=$scope.url + "open/goods/importGoods;
    	var form = new FormData();
    	form.append("file", fileObj);
    	 var xhr = new XMLHttpRequest();
         xhr.open("post", FileController, true);
         xhr.onreadystatechange = function () {
             if (xhr.readyState == 4 && xhr.status == 200) {
        	// 上传成功提示,清空file
    		var file = $("#file");
                file.after(file.clone().val(""));
                file.remove();
             }
         };
         xhr.send(form);
	}

Java后端代码:

读取文件中的内容,并保存到对象中。

提示:读取文件中单元格是以第一行中单元格名称读取。

/**
* 导入商品
*
* @param file 上传的文件
* @param request
* @return 上传结果
* @date 2018年4月23日
* @since 1.1.13
*/
@SuppressWarnings("resource")
@RequestMapping(value = "open/goods/importGoods", method = RequestMethod.POST)
@ResponseBody
public Object importGoodsStore(@RequestParam(value = "file", required = false) MultipartFile file,
		MultipartHttpServletRequest request) {
    try {
    // 读取上传的文件
        CommonsMultipartFile cf = (CommonsMultipartFile) file;
        DiskFileItem fi = (DiskFileItem) cf.getFileItem();
        InputStream inputStream = fi.getInputStream();
        Workbook wb = null;
        wb = new XSSFWorkbook(inputStream);// 解析xlsx格式
        Sheet rs = wb.getSheetAt(0);
        if (rs != null) {
            // 创建集合list
            List<UploadQUERY> uploadQUERYList = new ArrayList<>();
            String storeCode = "";
            Row rowZero = rs.getRow(0);
            Map<String,Integer> map = new HashMap<String,Integer>();
            for (int i = 0; i < rowZero.getLastCellNum() ; i++) {
                rowZero.getCell(i).setCellType(CellType.STRING);
                map.put(rowZero.getCell(i).toString(),i);
            }
            //获取Excel中的数据
            try {
            	int sum = rs.getLastRowNum();
                for (int i = 1; i <= sum; i++) {
                    //	对象,保存传入的数据
                    UploadQUERY uploadQUERY = new UploadQUERY();
                    Row row = rs.getRow(i);
                    //读区商品
                    if(row.getCell(map.get("sku")) !=null){
                        row.getCell(map.get("sku")).setCellType(CellType.STRING);
                        // sku
                        String sku = row.getCell(map.get("sku")).toString();
                        uploadQUERY.setSku(sku);
                       }
                    if (row.getCell(map.get("门店编码")) != null) {
                        row.getCell(map.get("门店编码")).setCellType(CellType.STRING);
                        // 门店编码
                        storeCode = row.getCell(map.get("门店编码")).toString();
                        uploadQUERY.setStoreCode(storeCode);
                    }
                    if (row.getCell(map.get("售价")) != null) {
                        row.getCell(map.get("售价")).setCellType(CellType.NUMERIC);
                        // 商品售价
                        Double salePrices = (Double)row.getCell(map.get("售价")).getNumericCellValue();
                        uploadQUERY.setSalePrice(salePrices);
                    }
                    uploadQUERYList.add(uploadQUERY);
                }
            } catch (Exception e) {
                logger.error("storeGoodsException:",e);
            }
        }
        return "成功";
    } catch (FileNotFoundException e) {
        logger.error("storeGoodsException:",e);
        return "失败";
    } catch (IOException e) {
        logger.error("storeGoodsException:",e);
        return "失败";
    }
}

Excel文件样式:

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值