java实现导入excel文件

本文提供了一个简易的Excel导入案例,涵盖从HTML文件上传到Java处理的全过程。通过具体代码示例,详细介绍了如何使用HTML表单上传文件,JavaScript验证文件类型,并在Java后端解析Excel数据,适用于数据量较小的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自己也整理出一个简单的excel导入例子,亲试可成功!建议可用于数据量较少的地方。

从文件上传,到java处理,都较为详细

1.html上传文件

<form id="uploadForm" method="post" action="importexcel.ajax" enctype="multipart/form-data">
	<input id="files" name="files" type="file" style="width:200px;"/>
</form>
<button onclick="importexcel();" type="button"><font style="color:#930093;">导入excel表</font></button>

2.js实现

function importexcel(){
			if(files == ""){
				alert("请选择要上传的文件");
			}else{
				//扩展名的文件名
                var files = document.getElementById("files").value;
                //扩展名的文件名
                var bbb=files.lastIndexOf(".");
                var ccc=files.substring(bbb+1);
				if(ccc=='xlsx'){
                    $("#uploadForm").submit();
                    setTimeout("fun()",1500);
				}else{
                    alert("请选择.xlsx文件");
				}
			}
        }

3.Java实现,最后用一个list接收即可,自行做业务处理

@RequestMapping(value = "/importexcel.ajax", method = RequestMethod.POST)
	@ResponseBody
	public viod importexcel(HttpServletRequest request, HttpServletResponse response){
       MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        MultipartFile multipartFile = multipartRequest.getFile("files");
        InputStream is = null;
        try {
            is = multipartFile.getInputStream();
            if(is!=null) {
                Workbook wb = WorkbookFactory.create(is);
                List<Dto> list = new ArrayList<Dto>();//自己定义接收数据
                int rowCount = 0;
                boolean temp = true;
                Sheet st = wb.getSheetAt(0);
                int rowNum = st.getLastRowNum(); //获取Excel最后一行索引,从零开始,所以获取到的是表中最后一行行数减一
                int colNum = st.getRow(1).getLastCellNum();//获取Excel列数
                for (int r = 2; r <= rowNum-2; r++) {//读取每一行,第一行为标题,从第二行开始
                    Row row = st.getRow(r);
                    HongbaoCalcItemDto h = new HongbaoCalcItemDto();
                    for (int l = 0; l < colNum; l++) {//读取每一行的每一列
                        Cell cell = row.getCell(l);
                        switch (l) {//0  1  2  3 自定义列数接受自己想要的数据
                            case 0:
                                h.setMemberAccount(cell.getStringCellValue());
                                break;
                            case 2:
                                h.setCalcDate(DateUtil.string2Date(cell.getStringCellValue(), DateUtil.FULL_FORMAT));
                                break;
                            case 3:
                                Double cashBonus = cell.getNumericCellValue();
                                h.setCashBonus(new BigDecimal(String.valueOf(cashBonus)));

                                break;
                            case 4:
                                Double points = cell.getNumericCellValue();
                                h.setPoints(points.intValue());
                                break;
                        }
                    }
                    list.add(h);
                }
                if(list.size()>0){
                   //得到数据,自行处理业务            
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InvalidFormatException e) {
            e.printStackTrace();
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值