2008-04-15
java读取excel文件
关键字: java因为公司工程的需要,所以学习了一下java读取excel的方法,开始以为会比较复杂。写完了也觉得没什么。还是归功于java的强大啊!(后来我从网上查到js也可以读取excel,不过他的那个ActiveXObject对象好像在火狐上面不支持。)今天把代码写出来,希望大家多多指点。我可以多多改进。个人觉得好像excel读取没有一个通用的解法。因为我们用hibernate框架,所以我的思路是把一行读取为一个对象,有几行就有几个对象,然后将其插入数据库。读取的excel只能为固定的格式。
/*
* 导入excel信息
*/
public boolean attendanceAdd(AttendanceInfoRecordAddForm form)
{
String filePath = form.getFilePath();//从struts的form中提取出文件路径
int rowCount; // excel的行数
int colCount; // excel的列数
Workbook rwb = null;
try
{
InputStream is = new FileInputStream(filePath);
rwb = Workbook.getWorkbook(is);
}
catch (FileNotFoundException e)
{
System.out.println("文件路径错误!");
return false;
}
catch (BiffException e)
{
e.printStackTrace();
return false;
}
catch (IOException e)
{
e.printStackTrace();
return false;
}
Sheet rs = rwb.getSheet(0);//得到第一张工作表
rowCount = rs.getRows();//行数
colCount = rs.getColumns();//列数
List excelArray = new ArrayList();//对象数组
loop1: for (int i = 1; i < rowCount; i++)
{
HzOaEhrAttendanceInfo excel = new HzOaEhrAttendanceInfo();//hibernate对象
for (int j = 0; j < colCount; j++)
{
Cell cell = rs.getCell(j, i);//得到单元格
String content = cell.getContents();//得到单元格内容转换为字符串
if (content == "")//如果一个单元格为空,则该行不形成对象
continue loop1;
switch (j)
{
case 0:
excel.setInfoOrder(Integer.valueOf(content));//转换为Integer对象
break;
case 1:
excel.setName(content);
break;
case 2:
excel.setThisDate(UTDate.getDate(content));//UTDate为一个工具类,将字符串转换为date类型
break;
case 3:
excel.setThisTime(content);
break;
case 4:
excel.setOnDutyTime(content);
break;
case 5:
excel.setOffDutyTime(content);
break;
case 6:
excel.setMyOnDutyTime(content);
break;
case 7:
excel.setMyOffDutyTime(content);
break;
case 8:
excel.setShouldNumber(Integer.valueOf(content));
break;
case 9:
excel.setTrueNumber(Integer.valueOf(content));
break;
case 10:
excel.setLateTime(content);
break;
case 11:
excel.setLeaveTime(content);
break;
case 12:
excel.setAbsenteeism(Integer.valueOf(content));
break;
case 13:
excel.setOverTime(content);
break;
default:
break;
}
}
excelArray.add(excel);//将对象加入数组
}
//在这里可以把对象数组插入到数据库
return true;
}
可能有点麻烦,水平有限,那位有好的解决办法,还望不吝赐教。由于客户是要求读入规定的excel文档,所以后期改进了一下,主要是加了一些判断是不是规定的文档。在此就不再写出来了。
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 836 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
原创----我的一个小框架
V 的话我用的是jstl,M的话就比较自由了,就是自定义的一些类。有数据库的话, ...
-- by terryang -
原创----我的一个小框架
前面只讨论到MVC中的C,剩下的MV怎么没说
-- by stworthy -
原创----我的一个小框架
azllza 写道建议: xxx.do,在servlet中解析出xxx来。xxx ...
-- by nickcen -
原创----我的一个小框架
呵呵,azllza 说的没错。我就是用它来做同一个业务层的操作。 更好的建议可以 ...
-- by terryang -
原创----我的一个小框架
这样一个类 就可以实现对同一个业务对象 实现他的增,删,改,查等操作了。 我 ...
-- by azllza






评论排行榜