Java读取Excel表格到对象
在公司的项目中,要求我把医疗人员传过来的excel表格资料通过系统解析成对象并且存到数据库,在学习了相关资料后,就开始了编写,代码如下:
public List<A> readExcel(File file) throws Exception {
//获取文件名字
String fileName = file.getName();
//获取文件类型
String fileType = fileName.substring(fileName.lastIndexOf(".") + 1);
System.out.println(" **** fileType:" + fileType);
//获取输入流
InputStream stream = new FileInputStream(file);
//获取工作薄
Workbook xssfWorkbook = null;
if (fileType.equals("xls")) {
xssfWorkbook = new HSSFWorkbook(stream);
} else if (fileType.equals("xlsx")) {
xssfWorkbook = new XSSFWorkbook(stream);
} else {
System.out.println("您输入的excel格式不正确");
}
A a = null;
List<A> aList = new ArrayList<A>();
// Read the Sheet
Sheet Sheet = xssfWorkbook.getSheetAt(0);
// Read the Row 从0开始
for (int rowNum = 0; rowNum <= Sheet.getLastRowNum(); rowNum++) {
Row Row = Sheet.getRow(rowNum);
if (Row != null) {
//判断这行记录是否存在
if (Row.getLastCellNum() < 1 || "".equals(getValue(Row.getCell(1)))) {
continue;
}
//获取每一行
a = new A();
a.setId(getValue(Row.getCell(0)));
a.setName(getValue(Row.getCell(1)));
aList.add(a);
}
}
return aList;
}
private String getValue(Cell cell){
int type = CellFormat.ultimateType(cell);
if(type == Cell.CELL_TYPE_BOOLEAN)
{
return String.valueOf(cell.getBooleanCellValue());
}
else if(type == Cell.CELL_TYPE_NUMERIC)
{
return String.valueOf(cell.getNumericCellValue());
}
else if(type == Cell.CELL_TYPE_BLANK)
{
return "";
}
else
{
return cell.getStringCellValue().trim();
}
}
这样就能通用的通过读取得到List对象再存入数据库。