浏览 321 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2008-04-15 关键字: 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文档,所以后期改进了一下,主要是加了一些判断是不是规定的文档。在此就不再写出来了。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |


