准备Excel
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
DecimalFormat decimalFormat = new DecimalFormat("0.00");
File file = new File("G:\\poi\\src\\main\\resources\\学生表.xls");
FileInputStream fileInputStream = new FileInputStream(file);
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(fileInputStream);
//获取第一个sheet页
HSSFSheet sheetAt = hssfWorkbook.getSheetAt(0);
List<String[]> strings = new ArrayList<>();
//获取所有的行数
int lastRowNum = sheetAt.getLastRowNum();
StringBuilder value = new StringBuilder();
for (int j = 1; j <=lastRowNum; j++) {
//拿到单行
HSSFRow row = sheetAt.getRow(j);
HSSFCell cell;
String[] values = new String[lastRowNum];
//循环出一行中的每一个元素
for (int k = 0; k <=row.getLastCellNum(); k++) {
cell = row.getCell(k);
if (cell != null) {
//根据不同的类型做不同的转换
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_STRING:
value.append(cell.getStringCellValue());
break;
case HSSFCell.CELL_TYPE_NUMERIC:
if (HSSFDateUtil.isCellDateFormatted(cell)) {
Date date = cell.getDateCellValue();
if (date != null) {
value.append(dateFormat.format(date));
}
} else {
value.append(decimalFormat.format(cell
.getNumericCellValue()));
}
break;
case HSSFCell.CELL_TYPE_FORMULA:
// 导入时如果为公式生成的数据则无值
if (cell.getStringCellValue().equals("")) {
value.append(cell.getNumericCellValue());
} else {
value.append(cell.getStringCellValue());
}
break;
case HSSFCell.CELL_TYPE_BLANK:
break;
case HSSFCell.CELL_TYPE_ERROR:
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
value.append((cell.getBooleanCellValue() == true ? "Y" : "N"));
break;
default:
value.setLength(0);
}
}
values[k]=value.toString();
value.setLength(0);
}
strings.add(values);
}
fileInputStream.close();
List<Student> students = new ArrayList<>();
for (String[] a: strings) {
Student student = new Student();
student.setName(a[0].trim());
if(a[1].trim()!=null && !"".equals(a[1].trim())){
student.setAge(Double.parseDouble(a[1].trim()));
}
student.setPhone(a[2].trim());
students.add(student);
}
students.forEach(item-> System.out.println(item.toString()));
执行结果