码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-10-25 09:39:49      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:mysql   hibernate   struts   spring   项目实战   

上次我们使用POI技术完成了用户列表的打印工作,下面我们来完成用户列表Excel文件的导入。

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

技术分享

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

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

下面我们来进行具体的实现工作
我们在用户列表的jsp页面中可以看到还有一个“导出”的按钮,
<input type="button" value="导出" class="s_button" onclick="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导出方法:
//导入用户列表
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中实现这个方法:
//前面要加这三个属性,以及get和set方法
private File userExcel;
private String userExcelContantType;
private String userExcelFileName;


@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

版权声明:本文为博主原创文章,未经博主允许不得转载。

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

标签:mysql   hibernate   struts   spring   项目实战   

原文地址:http://blog.csdn.net/acmman/article/details/49401251

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!