【SSH项目实战】国税协同平台-7.POI导入用户列表文件


我们要导入这个Excel文件到我们的系统中:



确切的说,是我们要将excel中的数据导入到数据库中保存起来
我们的操作过程:
1、获取excel文件
2、导入

2.1、读取工作簿
2.2、读取工作表
2.3、读取行
2.4、读取单元格
2.5、保存用户

下面我们来进行具体的实现工作
我们在用户列表的jsp页面中可以看到还有一个“导出”的按钮,
[html]  view plain copy
  1. <input type="button" value="导出" class="s_button" onclick="doExportExcel()"/>   
  2. <input name="userExcel" type="file"/>  
我们为这个按钮设置一个点击事件,使用js让其链接到我们的导入路径,从而跳转相应的Action进行导入工作:
[javascript]  view plain copy
  1. //导入列表  
  2. function doImportExcel(){  
  3.     document.forms[0].action="${basePath}tax/user_importExcel.action";  
  4.     document.forms[0].submit();  
  5. }  

我们在UserAction中添加importExcel导出方法:

[java]  view plain copy
  1. //前面要价这三个属性,以及get和set方法(struts的自动注入)  
  2. private File userExcel;  
  3. private String userExcelContantType;  
  4. private String userExcelFileName;  
  5.   
  6. //导入用户列表  
  7. public String importExcel(){  
  8.     //1、获取excel文件  
  9.     if(userExcel !=null){  
  10.         //是否是excel  
  11.         if(userExcelFileName.matches("^.+\\.(?i)((xls)|(xlsx))$")){  
  12.             //2、导入  
  13.             userService.importExcel(userExcel,userExcelFileName);  
  14.         }  
  15.     }  
  16.     return "list";  
  17. }  

 

我们在userService接口中添加importExcel导出方法,然后在userServiceImpl中实现这个方法:
[java]  view plain copy
  1. @Override  
  2. public void importExcel(File userExcel, String userExcelFileName) {  
  3.     try {  
  4.         FileInputStream fileInputStream = new FileInputStream(userExcel);  
  5.         //判断是否是03版本的Excel(还是07的)  
  6.         boolean is03Excel = userExcelFileName.matches("^.+\\.(?i)(xls)$");  
  7.         //1、读取工作簿  
  8.         Workbook workbook = is03Excel ? new HSSFWorkbook(fileInputStream)  
  9.                 : new XSSFWorkbook(fileInputStream);  
  10.         //2、读取工作表  
  11.         Sheet sheet=workbook.getSheetAt(0);  
  12.         //3、读取行  
  13.         if(sheet.getPhysicalNumberOfRows()>2){  
  14.             User user=null;  
  15.             for (int i = 2; i < sheet.getPhysicalNumberOfRows(); i++) {  
  16.                 //4、读取单元格  
  17.                 Row row=sheet.getRow(i);  
  18.                 user=new User();  
  19.                   
  20.                 //用户名  
  21.                 Cell cell1=row.getCell(0);  
  22.                 user.setName(cell1.getStringCellValue());  
  23.                 //账号  
  24.                 Cell cell2=row.getCell(1);  
  25.                 user.setAccount(cell2.getStringCellValue());  
  26.                 //所属部门  
  27.                 Cell cell3=row.getCell(2);  
  28.                 user.setDept(cell3.getStringCellValue());  
  29.                 //性别  
  30.                 Cell cell4=row.getCell(3);  
  31.                 user.setGender(cell4.getStringCellValue().equals("男"));  
  32.                 //电子邮箱  
  33.                 Cell cell5=row.getCell(4);  
  34.                 user.setEmail(cell5.getStringCellValue());  
  35.                   
  36.                 //导入用户的初始密码为123456  
  37.                 user.setPassword("123456");  
  38.                 //默认用户状态为有效  
  39.                 user.setState(User.USER_STATE_VALID);  
  40.                   
  41.                 //5、保存用户  
  42.                 userDao.save(user);  
  43.             }  
  44.         }  
  45.         workbook.close();  
  46.         fileInputStream.close();  
  47.     } catch (Exception e) {  
  48.         e.printStackTrace();  
  49.     }  
  50. }  
我们重启服务器来测试一下:
之前的用户列表只有四个人:


然后我们点击导入,并导入我们准备好的导入文件:



点击确定之后,发现列表中多了我们之前导入的数据:


说明我们的导入方法完成!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值