文档章节

导入excel

SunnyWu
 SunnyWu
发布于 2014/07/31 11:04
字数 666
阅读 87
收藏 0
/**
	 * 导入
	 * 
	 * @return
	 */
	public String importEmployee() {
		EmployeeResult result = new EmployeeResult();
		if (null == cvsFile) {
			return maintain();
		}
		try {
			HSSFWorkbook workbook = null;
			// 通过字符流获取HSSFWorkbook对象
			workbook = new HSSFWorkbook(new FileInputStream(cvsFile));
			// 获取第一张表格
			org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheetAt(0);

			if (sheet == null) {
				LOG.info("没有找到csv文件");
				employeeList = new ArrayList<BofEmployeeDto>();
                BofEmployeeDto b = new BofEmployeeDto();
                b.setErrMsg("没有找到csv文件!");
                employeeList.add(b);
				return showImportEmployeePage();
			}
			// 获取表格最大行数
			int lastRowNum = sheet.getLastRowNum();

			if (lastRowNum > MOBILE_LASTROWNUM) {
				LOG.info("csv文件数据大于1000条");
				employeeList = new ArrayList<BofEmployeeDto>();
                BofEmployeeDto b = new BofEmployeeDto();
                b.setErrMsg("csv文件数据大于1000条");
                employeeList.add(b);
				return showImportEmployeePage();
			}

			Row row = sheet.getRow(1);

			if (row == null) {
				getRequest().setAttribute("importMobile", 0);
				return showImportEmployeePage();
			}
			// 获取第一行的列数
			int lastCellNum = row.getLastCellNum();
			if (lastCellNum != MOBILE_LASTCELLNUM) {
				LOG.info("csv文件数据列数不为9");
				employeeList = new ArrayList<BofEmployeeDto>();
                BofEmployeeDto b = new BofEmployeeDto();
                b.setErrMsg("请使用正确模版!");
                employeeList.add(b);
				return showImportEmployeePage();
			}
			// 解析CVS封装成LIST
			result = this.convertToList(sheet);
			Set<String> set = new HashSet<String>(); 
			for( BofEmployeeDto e:result.getList()){
			    set.add(e.getEmployeeNo());
			}
			if(set.size()<result.getList().size()){
			    //存在相同员工工号
			    employeeList = new ArrayList<BofEmployeeDto>();
			    BofEmployeeDto b = new BofEmployeeDto();
			    b.setErrMsg("存在相同员工工号");
			    employeeList.add(b);
			    return showImportEmployeePage();
			}
			if (result.isErrMsg()) {
				employeeList = new ArrayList<BofEmployeeDto>();
				for(BofEmployeeDto r:result.getList()){
					if(StringUtils.isNotEmpty(r.getErrMsg())){
						employeeList.add(r);
					}
				}
				return showImportEmployeePage();
			}
		} catch (Exception e) {
			LOG.error("csv文件导入失败");
			throw new RuntimeException(e);
		}
		try {
			// 插入表
			employeeBiz.batchInsertEmployee(result.getList());
		} catch (Exception e) {
			LOG.debug("向表中导入数据失败");
			result.setSuccess(false);
		}
		setShowContent(true);
		LOG.info("向表中导入数据成功");
		return search();
	}



/**
	 * 根据输入流转换成列表
	 * 
	 * @param sheet
	 * @return
	 */
	public EmployeeResult convertToList(org.apache.poi.ss.usermodel.Sheet sheet) {
		EmployeeResult result = new EmployeeResult();
		List<BofEmployeeDto> returnEmployeeImportTempDtoList = new ArrayList<BofEmployeeDto>();
		int i = 0;
		int j = 0;
		BofEmployeeDto returnEmployeeImportTempDto;
		for (org.apache.poi.ss.usermodel.Row row : sheet) {
			j=i+1;
			// 跳过第一第二行标题
			if (i == 0 || i == 1) {
				i++;
				continue;
			}

			returnEmployeeImportTempDto = new BofEmployeeDto();
			int cell = 1;
			if (row != null) {
				String area = getCellValueString(row.getCell(cell++));
				if (!StringUtils.isEmpty(area)) {
					returnEmployeeImportTempDto.setArea(area);
				} else {
					returnEmployeeImportTempDto.setErrMsg("第" + j
							+ "行,格式错误,请核实!");
					result.setErrMsg(true);
				}
				String company = getCellValueString(row.getCell(cell++));
				if (!StringUtils.isEmpty(company)) {
					returnEmployeeImportTempDto.setCompany(company);
				} else {
					returnEmployeeImportTempDto.setErrMsg("第" + j
							+ "行,格式错误,请核实!");
					result.setErrMsg(true);
				}
				String doorNo = getCellValueString(row.getCell(cell++));
				if (!StringUtils.isEmpty(doorNo)) {
					returnEmployeeImportTempDto.setDoorNo(doorNo);
				} else {
					returnEmployeeImportTempDto.setErrMsg("第" + j
							+ "行,格式错误,请核实!");
					result.setErrMsg(true);
				}
				String doorName = getCellValueString(row.getCell(cell++));
				if (!StringUtils.isEmpty(doorName)) {
					returnEmployeeImportTempDto.setDoorName(doorName);
				} else {
					returnEmployeeImportTempDto.setErrMsg("第" + j
							+ "行,格式错误,请核实!");
					result.setErrMsg(true);
				}
				String employeeNo = getCellValueString(row.getCell(cell++));
				if (!StringUtils.isEmpty(employeeNo)) {
					returnEmployeeImportTempDto.setEmployeeNo(employeeNo);
					// 如果已经存在该员工号,则提示 第XX行,已存在此员工,请核实!
					if (employeeBiz.isExistEmployeeNo(employeeNo)) {
						returnEmployeeImportTempDto.setErrMsg("第" + j
								+ "行,已存在此员工,请核实!");
						result.setErrMsg(true);
					}
				} else {
					returnEmployeeImportTempDto.setErrMsg("第" + j
							+ "行,格式错误,请核实!");
					result.setErrMsg(true);
				}
				String name = getCellValueString(row.getCell(cell++));
				if (!StringUtils.isEmpty(name)) {
					returnEmployeeImportTempDto.setName(name);
				} else {
					returnEmployeeImportTempDto.setErrMsg("第" + j
							+ "行,格式错误,请核实!");
					result.setErrMsg(true);
				}
				String job = getCellValueString(row.getCell(cell++));
				if (!StringUtils.isEmpty(job)) {
					returnEmployeeImportTempDto.setJob(job);
				} else {
					returnEmployeeImportTempDto.setErrMsg("第" + j
							+ "行,格式错误,请核实!");
					result.setErrMsg(true);
				}
				String level = getCellValueString(row.getCell(cell++));
				if (!StringUtils.isEmpty(level)) {
					returnEmployeeImportTempDto.setLevel(level);
				} else {
					returnEmployeeImportTempDto.setErrMsg("第" + j
							+ "行,格式错误,请核实!");
					result.setErrMsg(true);
				}
				returnEmployeeImportTempDtoList
						.add(returnEmployeeImportTempDto);
			}
			i++;
		}
		result.setList(returnEmployeeImportTempDtoList);
		return result;
	}

	/**
	 * 获取Cell类型
	 * 
	 * @param cell
	 * @return
	 */
	public String getCellValueString(Cell cell) {
		if (cell == null) {
			return null;
		}
		switch (cell.getCellType()) {
		case Cell.CELL_TYPE_STRING:
			return cell.getRichStringCellValue().getString();
		case Cell.CELL_TYPE_NUMERIC:
			return String.valueOf(cell.getNumericCellValue());
		case Cell.CELL_TYPE_BOOLEAN:
			return BooleanUtils.toStringTrueFalse(cell.getBooleanCellValue());
		case Cell.CELL_TYPE_FORMULA:
			return cell.getCellFormula();
		default:
			return null;
		}
	}



© 著作权归作者所有

上一篇: spring概览
下一篇: 导出EXCEL
SunnyWu
粉丝 12
博文 74
码字总数 11164
作品 0
苏州
架构师
私信 提问
JeeSite|Excel导入导出

在各种管理系统中,数据的导入导出是经常用到的功能,通常导入导出以Excel、CSV格式居多。JeeSite提供了很好的Excel的导入导出功能,隐藏了底层的很多实现,通过简单的套路式步骤即可完成数据...

秋风似刀
2017/11/15
0
0
excel动态导入数据库---mysql

环境: jdk1.8+poi-3.17+mysql-5.6+excel2010(xlsx) 工具类: 1.excel解析工具类,使用poi sax模式解析excel。生成数据格式为List<LinkedHashMap<String,String>> 4.excel工具导入服务类 5.......

Sheav
06/06
35
0
JEPLUS平台Excel批量导入的操作配置——JEPLUS软件快速开发平台

JEPLUS平台Excel批量导入的操作配置 JEPLUS平台支持Excel数据的批量导入,但是很多客户不明白批量导入怎么配置,今天这个笔记就简单说一下JEPLUS的Excel数据批量导入怎么来配置。 一、效果展...

JEPLUS
2018/06/26
45
0
Java对象和Excel转换工具XXL-EXCEL

《Java对象和Excel转换工具XXL-EXCEL》 ![donate](http://

许雪里
2017/09/13
690
0
Object-Excel映射的通用解决方案--FastEJ

FastEJ说明 简介 在互联网信息发展的时代,对报表数据的处理需要一个通用化的解决方案。而导入Excel文件到内存、导出内存数据到Excel文件 是一个普遍化的需求。本项目旨在设计一个Object-Ex...

悟达
2016/09/14
731
0

没有更多内容

加载失败,请刷新页面

加载更多

代理模式之JDK动态代理 — “JDK Dynamic Proxy“

动态代理的原理是什么? 所谓的动态代理,他是一个代理机制,代理机制可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成,通过代理可以有效的让调...

code-ortaerc
今天
5
0
学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
今天
8
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
12
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
16
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部