上次我们使用POI技术完成了用户列表的打印工作,下面我们来完成用户列表Excel文件的导入。
我们要导入这个Excel文件到我们的系统中:
确切的说,是我们要将excel中的数据导入到数据库中保存起来
我们的操作过程:
1、获取excel文件
2、导入
2.1、读取工作簿
2.2、读取工作表
2.3、读取行
2.4、读取单元格
2.5、保存用户
下面我们来进行具体的实现工作
我们在用户列表的jsp页面中可以看到还有一个“导出”的按钮,
之前的用户列表只有四个人:
然后我们点击导入,并导入我们准备好的导入文件:
点击确定之后,发现列表中多了我们之前导入的数据:
说明我们的导入方法完成!
我们要导入这个Excel文件到我们的系统中:
确切的说,是我们要将excel中的数据导入到数据库中保存起来
我们的操作过程:
1、获取excel文件
2、导入
2.1、读取工作簿
2.2、读取工作表
2.3、读取行
2.4、读取单元格
2.5、保存用户
下面我们来进行具体的实现工作
我们在用户列表的jsp页面中可以看到还有一个“导出”的按钮,
<input type="button" value="导出" class="s_button" οnclick="doExportExcel()"/>
<input name="userExcel" type="file"/>
我们为这个按钮设置一个点击事件,使用js让其链接到我们的导入路径,从而跳转相应的Action进行导入工作:
//导入列表
function doImportExcel(){
document.forms[0].action="${basePath}tax/user_importExcel.action";
document.forms[0].submit();
}
我们在UserAction中添加importExcel导出方法:
//前面要价这三个属性,以及get和set方法(struts的自动注入)
private File userExcel;
private String userExcelContantType;
private String userExcelFileName;
//导入用户列表
public String importExcel(){
//1、获取excel文件
if(userExcel !=null){
//是否是excel
if(userExcelFileName.matches("^.+\\.(?i)((xls)|(xlsx))$")){
//2、导入
userService.importExcel(userExcel,userExcelFileName);
}
}
return "list";
}
我们在userService接口中添加importExcel导出方法,然后在userServiceImpl中实现这个方法:
@Override
public void importExcel(File userExcel, String userExcelFileName) {
try {
FileInputStream fileInputStream = new FileInputStream(userExcel);
//判断是否是03版本的Excel(还是07的)
boolean is03Excel = userExcelFileName.matches("^.+\\.(?i)(xls)$");
//1、读取工作簿
Workbook workbook = is03Excel ? new HSSFWorkbook(fileInputStream)
: new XSSFWorkbook(fileInputStream);
//2、读取工作表
Sheet sheet=workbook.getSheetAt(0);
//3、读取行
if(sheet.getPhysicalNumberOfRows()>2){
User user=null;
for (int i = 2; i < sheet.getPhysicalNumberOfRows(); i++) {
//4、读取单元格
Row row=sheet.getRow(i);
user=new User();
//用户名
Cell cell1=row.getCell(0);
user.setName(cell1.getStringCellValue());
//账号
Cell cell2=row.getCell(1);
user.setAccount(cell2.getStringCellValue());
//所属部门
Cell cell3=row.getCell(2);
user.setDept(cell3.getStringCellValue());
//性别
Cell cell4=row.getCell(3);
user.setGender(cell4.getStringCellValue().equals("男"));
//电子邮箱
Cell cell5=row.getCell(4);
user.setEmail(cell5.getStringCellValue());
//导入用户的初始密码为123456
user.setPassword("123456");
//默认用户状态为有效
user.setState(User.USER_STATE_VALID);
//5、保存用户
userDao.save(user);
}
}
workbook.close();
fileInputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
我们重启服务器来测试一下:
之前的用户列表只有四个人:
然后我们点击导入,并导入我们准备好的导入文件:
点击确定之后,发现列表中多了我们之前导入的数据:
说明我们的导入方法完成!
至此我们用户列表的“导入”和“导出”功能全部编写完毕!
转载请注明出处:http://blog.csdn.net/acmman/article/details/49401251