您的位置:首页 > 编程语言 > Java开发

Excel上传并解析(java)

2017-07-17 09:14 295 查看
问题:本地测试时,通过本地地址上传文件是可行的,但是当把项目部署到服务器上时,通过这种方式上传本地文件是不行的。

解决:需要先把文件上传到服务器,然后再做其他操作(提取数据,数据转换,存档等)

前端代码(表单上传文件,后面会研究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一致

如有错误,还请多指教。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: