【思路简述】
本文继续上一篇文章,上一篇中生成了“D://用户列表.xls”的excel文件,我们接下来将这个excel导入,然后显示在控制台上。
工程什么的都同上一篇文章,只是在ExcelService.java中添加了一个inputExcel()的方法,如下:
【ExcelService.java】
@Test public void inputExcel(){ File userExcel=new File("D:\用户列表.xls"); try { FileInputStream fileInputStream =new FileInputStream(userExcel); //1.读取工作簿 Workbook workbook=WorkbookFactory.create(userExcel); //2.读取工作表 Sheet sheet=workbook.getSheetAt(0); //读取行 if(sheet.getPhysicalNumberOfRows()>2){ //读取Excel的行数 //读取单元格,存入User对象中 User user =null; Row row=null; for(int i=2;i<sheet.getPhysicalNumberOfRows();i++){ //从第3行开始读取,前两行都是标题 //3.读取行 row=sheet.getRow(i); //第i行 user=new User(); //4.读取单元格 Integer id=Integer.valueOf(row.getCell(0).getStringCellValue()); user.setId(id); String name=row.getCell(1).getStringCellValue(); user.setName(name); String sex=row.getCell(2).getStringCellValue(); user.setSex(sex); String phone; try { phone =row.getCell(3).getStringCellValue(); } catch (Exception e) { System.out.println("科学计数......"); //排除 Excel单元格科学计数的时候提取数据错误 double dPhone=row.getCell(3).getNumericCellValue(); //BigDecimal将科学计数方式的数值转化成一个正常的数值并转换成字符串 phone=BigDecimal.valueOf(dPhone).toString(); } user.setPhone(phone); String email=row.getCell(4).getStringCellValue(); user.setEmail(email); //正常的话在这里会有一句执行插入数据库的操作 System.out.println(user.toString()); } } workbook.close(); fileInputStream.close(); } catch (Exception e) { e.printStackTrace(); } }
【运行结果】
在控制台上(对了,要在User.java中补充一个toString()方法):