java 解析excel文件

在项目中遇到的这样的需求,用户需要用到导入功能,将数据通过excel文件上传到服务器,并将数据保存到数据库。

利用java解析excel文件:

代码片段:

public class Test(){
protected ActionForward doAction(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception{

ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory());
List wj_list = upload.parseRequest(request);
java.io.InputStream in=null;
for (int i = 0; i < wj_list.size(); i++) {
FileItem fi = (FileItem) wj_list.get(i);
if (!fi.isFormField()) {
// file = fi.get();// 文件内容
 in=fi.getInputStream();
}
}
List list=new  ArrayList();
try {
//jxl.Workbook rwb = Workbook.getWorkbook(new File(
//"f:\\" + filename + ".xls"));
jxl.Workbook rwb = Workbook.getWorkbook(in);
Sheet st = rwb.getSheet(0);//得到第0个sheet
int n = st.getRows();//得到行数
int i = 1; // 开始行,从第二行开始
while (i<n) {//循环行
Test t= new Test();
//循环列
for (int j = 0; j < 4; j++) {
if (st.getCell(j, 0).getContents().equals("第一列")){
t.setPropertyOne((st.getCell(j, i).getContents()));
}
if (st.getCell(j, 0).getContents().equals("第二列")){
   t.setPropertyTwo(st.getCell(j, i).getContents());
}
if (st.getCell(j, 0).getContents().equals("第三列")){
  t.setPropertyThree(st.getCell(j, i).getContents());
}
if (st.getCell(j, 0).getContents().equals("第四列")){
t.setPropertyFour(st.getCell(j, i).getContents());
}

}
list.add(t);//将解析的每一行的对象放到一个list
i++;
}
rwb.close();
in.close();
} catch (Exception e) {
e.printStackTrace();
}
return mapping.findForward("success");
}
}

但是有一个困惑的问题是:我的excel文件中有2条数据,而解析的时候却是有大于2条的时候,不知道是怎么回事

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值