Excel上传并解析(java)

本文介绍了一种在服务器环境中实现文件上传和解析的方法。详细解释了如何从前端表单提交文件到后端,并在服务器上读取Excel文件内容,包括会员姓名、电话等信息。

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

问题:本地测试时,通过本地地址上传文件是可行的,但是当把项目部署到服务器上时,通过这种方式上传本地文件是不行的。
解决:需要先把文件上传到服务器,然后再做其他操作(提取数据,数据转换,存档等)

前端代码(表单上传文件,后面会研究ajax上传文件)

<s:form action="member_extractMembers" method="post" enctype="multipart/form-data">
    <span>选择Excel文件</span>
    <s:file name="upload_excel" accept="application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"></s:file>
    <br>
    <s:submit value="导入"></s:submit>
</s:form>

后端代码(excel文件解析):

    /**
     * 提取Excel中的内容
     * */
    public static List<Member> extract(File file_name){
        //List<Member> members = new ArrayList<>();
        List<Member> members = new ArrayList<>();
        try {
            InputStream is = new FileInputStream(file_name);
            XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
            //只读取第一个sheet进行处理
            XSSFSheet sheet = xssfWorkbook.getSheetAt(0);

            //处理当前sheet,循环读取每一行
            for(int row_num = 1; row_num < (sheet.getLastRowNum()+1);row_num++){
                //System.out.println(sheet.getLastRowNum());
                XSSFRow xss_row = sheet.getRow(row_num);
                Member member = new Member();
                member.setName(getStringVal(xss_row.getCell(0)));
                member.setPhone(getStringVal(xss_row.getCell(1)));
                member.setCard_name(getStringVal(xss_row.getCell(2)));
                member.setLoose_change(getStringVal(xss_row.getCell(3)));
                members.add(member);
            }
            //}
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return members;
    }

其他代码:

    /**
     * 提取文件中的会员
     * */
    public String extractMembers(){
        List<Member> members = MemberUtil.extract(upload_excel);

        request.setAttribute("add_members", members);
        request.setAttribute("title", "批量添加会员");
        request.setAttribute("navPath", "foreground/nav2/nav.jsp");
        request.setAttribute("contempPath", "foreground/shop/member/addMany.jsp");
        return SUCCESS;
    }

注:upload_excel 与前端input的name一致

如有错误,还请多指教。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值