`
xcc258
  • 浏览: 73821 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

POI 导入excel文件问题

    博客分类:
  • WEB
阅读更多
	public int importExcel(String filename,Department dep) {
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
		File f = new File(filename);
		FileInputStream is;
		int count = 0;
		try {
			is = new FileInputStream(new File(filename));
			HSSFWorkbook wb = new HSSFWorkbook(is);
			int sheetNum = wb.getNumberOfSheets();
			for (int i = 0; i < sheetNum; i++) {
				HSSFSheet childSheet = wb.getSheetAt(i);
				int rowNum = childSheet.getLastRowNum();
				if (rowNum > 0) {
					for (int j = 1; j <= rowNum; j++) {
						for (int k = 0; k < 1; k++) {
						Employee emp=new Employee();
							HSSFCell b = childSheet.getRow(j).getCell(
									(short) (k+0));//No
							if (b != null) {
								emp.setNo(b.toString());
							} else {
								count++;
								continue;
							}

							b = childSheet.getRow(j).getCell((short) (k+1));// Name
							if (b != null) {
								emp.setName(b.toString());
							} else {
								count++;
								continue;
							}

							b = childSheet.getRow(j).getCell((short) (k+2));// Birthday
							if (b != null) {
								try{
								Date  date=sdf.parse(b.toString());
								if(date!=null){
								emp.setBirthday(date);
								}else{
									count++;
									continue;
								}
								}catch(Exception e){
									count++;
									continue;
								}
							} else {
								count++;
								continue;
							}

							b = childSheet.getRow(j).getCell((short) (k+3));// CardType
							if (b != null) {
								emp.setCardType(b.toString());
							} else {
								emp.setCardType("");
							}

							b = childSheet.getRow(j).getCell((short) (k+4));// CardNO
							if (b != null) {
								emp.setCardNo(b.toString());
							} else {
								emp.setCardNo("");
							}
							b = childSheet.getRow(j).getCell((short) (k+5)); //Sex
							if (b != null&&!"".equals(b.toString().trim())) {
								if(b.toString().equals("男")){
									emp.setSex(SexEnum.Man.getValue());
								}else if(b.toString().equals("女")){
									emp.setSex(SexEnum.Woman.getValue());
								}else{
									emp.setSex(SexEnum.Unknow.getValue());
								}
							} else {
								emp.setSex(0);
							}
							b = childSheet.getRow(j).getCell((short) (k+6));// Telַ
							if (b != null) {
								emp.setTel(b.toString());
							} else {
								emp.setTel("");
							}

							b = childSheet.getRow(j).getCell((short) (k+7));//Mobile
							if (b != null) {
								emp.setMobile(b.toString());
							} else {
								count++;
								continue;
							}
							if(emp.getNo()!=null&&!"".equals(emp.getNo().trim())){
								if(this.isHasNo(emp.getNo())){
									count++;
									continue;
								}
							}else{
								count++;
								continue;
							}
							emp.setDepartment(dep.getUid());
							emp.setExpertType("");
							emp.setStatex(EmployeeStateEnum.Normal.getValue());
							emp.setUser(GeneralUtil.getLoginUser().getUid());
							
							ServiceUtil.getInstance().getEmployeeService().create(emp);
							}
						}
					
					}
				}

			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} 
		return count;

	}

 

由于我做的是管理系统所以经常会导入手机号码,但是导入的时候我发现,手机号码变成科学计数法形式了,像1.3556859658E10。我现在用到解决方法有三种:

第一种:下策

定义个函数,判断是否是科学计数法的形式,然后截取字符串。。。拼接成手机号码。。这样虽然能实现。但是太死了。。。

第二种:中策

后来我想到也有可能是excel的问题,我在excel中设置格式为文本格式,还是不行,郁闷啊。。偶然之间发现。。如果你先输入数据再设置格式,没有作用,但是你新建excel后立即设置为文本格式,在输入数据的话,OK,一切正常。。这个方法虽然比第一个好点。但是感觉还是不方便。。

第三种:还是中策

String mobile="";
b = childSheet.getRow(j).getCell((short) (k+3));// Mobile
if (b != null) {
	if(b.toString().indexOf(".")!= -1&&b.toString().indexOf("E")!= -1){
		DecimalFormat df=new DecimalFormat();
		mobile= df.parseObject(b.toString()).toString();
	}else{
		mobile=b.toString();
	}
       } else {
	continue;
}

 使用DecimalFormat类来进行转换,但是我同事说。在转换的过程中有时候会出错。

所以希望了解的朋友给个上上策给我啊。。。。

 

分享到:
评论
1 楼 Hetal 2011-06-29  
关于poi导入excel,至今还未找到很好的解决方案,主要是excel的自定义可是很是无奈。兄弟有要的解决方案站内信告知小弟一下。

相关推荐

    POI导入Excel并返回校验后的错误文件(原样)下载以及校验错误信息,同时加进度条

    POI导入Excel并返回校验后的错误文件(原样数据文件,并添加批注,注:由于批注只能加1000条,会在Excel后面添加一栏错误信息)下载以及页面展示校验错误信息,同时添加导入进度条,提供页面js和css代码,后端...

    poi导入excel表需要的jar包

    在实际开发中,你可以通过以下步骤使用Apache POI来导入Excel数据: 1. **创建工作簿对象**:使用`WorkbookFactory.create()`方法,传入文件流或者文件路径来创建一个`Workbook`对象,代表整个Excel文件。 2. **...

    java_poi实现excel导入导出

    Java POI 实现 Excel 导入导出 Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 ...在本文中,我们已经详细介绍了如何使用 Java POI 实现 Excel 导入导出功能,包括读取和写入 Excel 文件。

    Java 使用poi导入excel 并使用xml做数据验证

    导入数据的过程中,首先需要创建一个`Workbook`对象来代表Excel文件,然后通过`Sheet`对象来操作单个工作表,接着是`Row`和`Cell`对象来处理每一行和每一列的数据。使用POI读取Excel数据的基本步骤如下: 1. 加载...

    java_poi导入 excel

    Java POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,包括Excel。这篇博文链接虽然没有提供具体内容,但我们...文档"java_poi导入EXCEL.doc"可能包含了更详细的示例或指南,你可以参考它来加深理解。

    POI 导入Excel 提醒LeftoverDataException求帮助

    在提供的文件列表中,"POI 导入Excel 提醒LeftoverDataException求帮助 - J2SE.htm"可能是对问题的详细描述或解决方案,而"POI 导入Excel 提醒LeftoverDataException求帮助 - J2SE_files"可能包含了相关的代码示例或...

    POI实现Excel导入导出并附带加载进度条

    在导入Excel时,我们通常会创建一个Workbook对象,然后通过其工作表接口(Sheet)访问具体的单元格(Cell)。对于导出,我们需要创建一个新的Workbook,添加工作表,然后填充数据到相应的单元格中。 在描述中提到,...

    Springboot+Poi实现Excel的导入导出

    2. **导入Excel**:读取本地Excel文件,解析Workbook,获取每个Sheet,再遍历Sheet中的Row和Cell。将读取到的数据转换为适合插入数据库的格式,通过MyBatis的SqlSession执行相应的INSERT语句,将数据存入MySQL数据库...

    java_poi导入excel通用工具类

    这个"java_poi导入excel通用工具类"是利用Java的POI库和一些额外的技术来实现对Excel数据的导入功能,使得开发人员能够方便地将Excel数据转化为Java对象或者对已有对象进行填充。下面我们将深入探讨相关的知识点。 ...

    java_poi导入excel通用工具类V0915

    "java_poi导入excel通用工具类V0915" 提供了一种通用的方式来处理Excel数据的导入工作,它支持多种赋值方式,包括单个对象、列表对象以及指定坐标的赋值。 首先,让我们深入理解一下这个工具类的主要功能: 1. **...

    poi导入导出Excel源码

    标题“poi导入导出Excel源码”和描述涉及到的核心知识点是利用Apache POI进行Excel文件的导入与导出操作。 首先,让我们详细了解Apache POI库。Apache POI是Apache软件基金会的一个开源项目,其主要目标是创建Java ...

    POI导入Excel表格数据小例子

    ### POI导入Excel表格数据小例子 #### 一、背景介绍 Apache POI 是一个用于读写 Microsoft Office 格式文件的 Java API,包括 Excel、Word 和 PowerPoint 等。本例通过 Apache POI 库将 Excel 文件中的数据导入到...

    SSM框架利用poi导入导出Excel文件 demo

    在本示例"SSM框架利用poi导入导出Excel文件 demo"中,我们将探讨如何在SSM项目中使用Apache POI库来实现Excel文件的导入与导出功能。 Apache POI是一个流行的开源库,它允许开发者在Java应用程序中创建、修改和显示...

    POI导入Excel文件--form表单提交

    本篇文章将详细探讨如何使用POI库来导入Excel文件,并结合form表单提交的数据进行处理。我们将讨论以下几个核心知识点: 1. **Apache POI简介** Apache POI 是一个开源项目,它提供了API来处理Microsoft的Office...

    java使用POI将Excel文件中数据导入SqlServer中

    在界面上有一个TextField,一个浏览按钮,一个导入按钮。当选择浏览按钮时,弹出文本选择窗口,选择Excel文件之后,将路径显示在TextField中。点击导入,将Excel中的数据保存到SqlServer数据库中。

    基于POI的Excel多Sheet页导出导入工具类

    6. **性能优化**:Apache POI库本身在处理大量数据时可能存在性能问题,这个工具类可能会通过一些优化策略,如内存管理、流式写入等,来改善处理大型Excel文件的效率。 在实际应用中,这个工具类可以广泛应用于数据...

    基于poi的excel导入.doc

    "POI导入Excel知识点" POI简介 Apache POI是一个开源的Java库,用于处理Microsoft Office文档,包括Excel、Word、PowerPoint等。POI提供了一个纯Java的解决方案,用于读取、写入和操作Office文档。 POI中的Excel...

    java poi 导入大数据量Excel数据 防止内存溢出处理.zip

    然而,当处理大数据量的Excel文件时,POI可能会导致内存溢出(Out of Memory, OOM),因为默认情况下它会将整个工作簿加载到内存中。为了防止这种问题,我们需要采用优化策略来高效地处理大量数据。 1. **分块读取*...

    poi导入导出excel生成报表

    ### POI 导入导出 Excel 生成报表详解 #### 一、概述 Apache POI 是一个用于读写 Microsoft Office 格式文件的 Java API,其中包括对 Excel 文件的支持。通过 POI,我们可以轻松地实现 Excel 文件的创建、读取、...

    poi实现导入数据到excel模板

    poi实现导入数据到excel模板,本来想上传poi的jar包,谁知限制我只能上传15M的文件,汗。。。。。 不知道啥时候开始要分了... 代码见: https://github.com/thisisnohi/nohi-doc poi实现导入数据到excel模板。...

Global site tag (gtag.js) - Google Analytics