`
javaEEdevelop
  • 浏览: 876310 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

java excel导入笔记

 
阅读更多

 

package cn.test;


import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;


/**
 * @function:excel导入的工具类
 * @author: zhangchunping
 * @email: zhangch_hk@163.com
 * @createTime:Jun 7, 2012  10:04:09 AM
 * @ModifyTime:Jun 7, 2012 10:04:09 AM
 * @modifyUser:zhangchunping
 * @modifyEmail:zhangch_hk@163.com
 */
public final class ExcelUtil {
	public static int resultCode; // 返回的结果状态1成功,0失败

	public static String resultMessage; // 返回的结果消息

	//private static final String[] tables = new String[13];

	static {
		resultCode = 0;
		resultMessage = "No Init";
	}

	
	public static  List<De_InsurancecardSchema> importExecl(String path) {

		
		if(null==path&&"".equals(path)){
			resultCode = 0;
			resultMessage = "HSSF is the POI Project's pure Java implementation of the Excel '97(-2007) file format!";
			return null;
		}
		String suffix=path.substring(path.lastIndexOf('.')+1,path.length());	//后缀
		if(null==path&&"".equals(path)){
			resultCode = 0;
			resultMessage = " file suffix format no rigth!";
			return null;
		}
		if(suffix.toUpperCase().equals("XLS")){		//97-2007(不包括2007)的
			
			return readRequestExcel2003(path);
		}else if(suffix.toUpperCase().equals("XLSX")){//包括2007的
			return readRequestExcel2007(path);
		}
		return null;
		
	}
	
	public static List<De_InsurancecardSchema> readCancelRequestExcel2003(String path){
		
		// 实例化集合对象
		List<De_InsurancecardSchema> deInsurancecardSchemas = new ArrayList<De_InsurancecardSchema>();
		// excel读取对象
		HSSFWorkbook hb = null;
		// 读入流对象
		InputStream ins = null;
		// 文件上传对象
		De_InsurancecardSchema schema = null;
		// 定义 row、cell  
		HSSFRow row;  
		String cell;  
		
		try {
			// 导入文件
			ins = new FileInputStream(new File(path));
			hb = new HSSFWorkbook(ins);
			HSSFSheet sheet = hb.getSheetAt(0); // 只是第一个sheet
			// 根本就没有sheet
			if (sheet != null) {
				int lastRowNum = sheet.getPhysicalNumberOfRows(); // 总共有多少行数据
				if (lastRowNum >1) {
					//第二行开始
					output: //行的开始
					for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) {  
					    row = sheet.getRow(i);  
					    int rowNum = row.getRowNum(); // 行数
					    if(i>0){
					    	schema = new De_InsurancecardSchema(); // 每次循环一行是都实例化一个scheme
					    	//只有一列,所以等与1
					    	for (int j = 0; j < 1; j++) {  
						        
					    		if(row.getCell(j)!=null){
					    			 cell = row.getCell(j).toString(); 
					    		}else{
					    			 cell = null; 
					    		}
						      
						        int cellNum =j;
						        
						        boolean flag = false;
								switch (cellNum) {
								case 0:// 保单号(必填)
									if (cell != null && !"".equals(cell)) {
										schema.setContNo(cell);
										flag = true;
									}
									break;
								}
								if (!flag) {
									resultCode = 0;
									resultMessage = "第"+(rowNum+1)+"行的第"
									+ (cellNum + 1) + "列 保单号的格式不正确!";
									deInsurancecardSchemas = null;
									break output; // 跳到最外面

								}
					    	} 
					    	
					    	if(null!=schema.getContNo()&&!"".equals(schema.getContNo())){
								
								// 增加到集合里
					    		deInsurancecardSchemas.add(schema);
								resultCode = 1;
								resultMessage = "上传成功!";
							}else{
								//数据的完整性不正确!
								deInsurancecardSchemas=null;
								resultCode = 0;
								//当提示这里的时候,只能说明你的excel的最后一行或最后一列有编辑过,但是没有数据,选择右键删除最后一行或最后一列,就可以了
								resultMessage = "请求保单号的数据完整性不正确!";
								
							}
					    }
					    
					}  
				}else if(lastRowNum<=1){	
					resultCode = 0;
					resultMessage = "Excel数据为空!";
					deInsurancecardSchemas = null;
				}

			} else {
				deInsurancecardSchemas = null;
				resultCode = 0;
				resultMessage = "导入的EXCEL为空!";
			}

		} catch (FileNotFoundException e) {

			resultCode = 0;
			resultMessage = e.getMessage();
			deInsurancecardSchemas = null; // 出错了
		} catch (IOException e) {

			resultCode = 0;
			resultMessage = e.getMessage();
			deInsurancecardSchemas = null; // 出错了
		} finally {

			if (ins != null) {
				try {
					ins.close();
				} catch (IOException e) {
					resultCode = 0;
					resultMessage = e.getMessage();
					deInsurancecardSchemas = null; // 出错了
				}
			}
		}
		return deInsurancecardSchemas;
	}
	@SuppressWarnings("deprecation")
	public static List<De_InsurancecardSchema> readCancelRequestExcel2007(
			String path) {

		// 实例化集合对象
		List<De_InsurancecardSchema> deInsurancecardSchemas = new ArrayList<De_InsurancecardSchema>();
		
		// 文件上传对象
		De_InsurancecardSchema schema = null;
		// 构造 XSSFWorkbook 对象,strPath 传入文件路径  
		XSSFWorkbook xwb;
		// 定义 row、cell  
		XSSFRow row;  
		String cell;  

		try {
			xwb = new XSSFWorkbook(path);
			
			// 读取第一章表格内容 ,只是第一个sheet
			XSSFSheet sheet = xwb.getSheetAt(0);  
			
			if (sheet != null) {
				
				int lastRowNum = sheet.getPhysicalNumberOfRows(); // 总共有多少行数据
				if (lastRowNum >1) {
					//第二行开始
					output: //行的开始
					for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) {  
					    row = sheet.getRow(i);  
					    int rowNum = row.getRowNum(); // 行数
					    if(i>0){
					    	schema = new De_InsurancecardSchema(); // 每次循环一行是都实例化一个scheme
					    	
					    	for (int j = 0; j < 1; j++) {  
						        
					    		if(row.getCell(j)!=null){
					    			 cell = row.getCell(j).toString(); 
					    		}else{
					    			 cell = null; 
					    		}
						      
						        int cellNum =j;
						        
						        boolean flag = false;
								switch (cellNum) {
								case 0:// 保单号(必填)
									if (cell != null && !"".equals(cell)) {
										schema.setContNo(cell);
										flag = true;
									}
									break;
								}
								if (!flag) {
									resultCode = 0;
									resultMessage = "第"+(rowNum+1)+"行的第"
									+ (cellNum + 1) + "列 保单号的格式不正确!";
									deInsurancecardSchemas = null;
									break output; // 跳到最外面

								}
					    	} 
					    	
					    	if(null!=schema.getContNo()&&!"".equals(schema.getContNo())){
								
								// 增加到集合里
					    		deInsurancecardSchemas.add(schema);
								resultCode = 1;
								resultMessage = "上传成功!";
							}else{
								//数据的完整性不正确!
								deInsurancecardSchemas=null;
								resultCode = 0;
								//当提示这里的时候,只能说明你的excel的最后一行或最后一列有编辑过,但是没有数据,选择右键删除最后一行或最后一列,就可以了
								resultMessage = "请求保单号的数据完整性不正确!";
								
							}
					    }
					    
					}  
				}else if(lastRowNum<=1){	
					resultCode = 0;
					resultMessage = "Excel数据为空!";
					deInsurancecardSchemas = null;
				}

			} else {
				deInsurancecardSchemas = null;
				resultCode = 0;
				resultMessage = "导入的EXCEL为空!";

			}

		} catch (FileNotFoundException e) {

			resultCode = 0;
			resultMessage = e.getMessage();
			deInsurancecardSchemas = null; // 出错了
		} catch (IOException e) {

			resultCode = 0;
			resultMessage = e.getMessage();
			deInsurancecardSchemas = null; // 出错了
		} catch (UnsupportedOperationException e) {
			resultCode = 0;
			resultMessage = e.getMessage();
			deInsurancecardSchemas = null; //  java.lang.UnsupportedOperationException:  Unknown Ptg in Formula: 0xffffffff (-1)
		}catch (Exception e) {
			resultCode = 0;
			resultMessage = e.getMessage();
			deInsurancecardSchemas = null; // 出错了
		}  
		// 返回
		return deInsurancecardSchemas;
	}

	
	public static void main(String[] args) {

		cancelTest2003();
		cancelTest2007();

	}
	public static void cancelTest2003(){
		
		String  f="C:\\Users\\Administrator\\Desktop\\cancelRequest-templet.xls";
		 List<De_InsurancecardSchema> lists=ExcelUtil.readCancelRequestExcel2003(f);
		 if(lists!=null)
		 for(De_InsurancecardSchema schema:lists){
			 System.out.println(schema.toString());
		 }
		 System.out.println(ExcelUtil.resultCode+"\t"+ExcelUtil.resultMessage);
	}
	 public static void cancelTest2007(){
		
		String  f="C:\\Users\\Administrator\\Desktop\\cancelRequest-templet-2007.xlsx";
		 List<De_InsurancecardSchema> lists=ExcelUtil.readCancelRequestExcel2007(f);
		 if(lists!=null)
		 for(De_InsurancecardSchema schema:lists){
			 System.out.println(schema.toString());
		 }
		 System.out.println(ExcelUtil.resultCode+"\t"+ExcelUtil.resultMessage);
	}
}

 

  poi3.8的下载地址 http://poi.apache.org/download.html

分享到:
评论

相关推荐

    Java操作EXCEL 学习笔记

    本学习笔记将深入探讨如何使用Apache POI库来实现Java对Excel的高效操作。 Apache POI是一个开源项目,提供了读写Microsoft Office格式文档的能力,包括Excel(.xlsx和.xls)。在Java中,我们可以借助POI库来创建、...

    easypoi导入导出excel表格.pdf

    首先,我们将要讲述的是easypoi这一Java库在处理Excel表格导入导出功能的应用。在Java开发中,对于数据的导入导出,尤其是Excel表格,是一种非常常见的需求。而easypoi为我们提供了简洁的方式来实现这一功能。 ### ...

    java学习笔记模版

    - 实现批量导入功能通常涉及读取Excel数据,将数据转化为Java对象,然后保存到数据库或显示在页面上。这里可能用到了Apache POI库或其他类似工具来处理Excel文件。 8. **接口调用**: - 终端抵扣券兑换可能涉及到...

    Java最全学习资料+面试题+DOS命令+设计模式+Excel技巧+java学习笔记

    Java程序员可以通过Apache POI等库与Excel交互,实现自动化报告、数据导入导出等功能。学习如何高效使用Excel公式、图表、数据透视表等特性,将有助于提升工作效率。 6. **Java学习笔记**:个人的学习笔记通常包含...

    POI导入导出excel文件 --- 个人珍藏笔记

    本笔记将介绍如何使用POI来导入和导出Excel文件。 首先,我们需要将`poi-3.1-FINAL.jar`库添加到项目的类路径中,这样才能使用POI提供的API。导入这个库后,我们就可以开始编写处理Excel文件的代码了。 在示例代码...

    web导出Excel笔记

    - `HSSFSheet`:用于创建Excel工作表对象。 - `HSSFRow`:用于创建行对象。 - `HSSFCellStyle`:用于设置单元格样式。 - `setFilename`:用于设置Excel文件名。 - `getInputStream`:返回一个`InputStream`对象...

    Java后台+小程序扫码点餐系统

    一,Java后台技术选型: ...网页后台,mysql数据库,Java和springboot,含管理后台,excel的导入和导出。 扫码点餐,我的订单,用户注册,排号等位,菜品列表,菜品搜索等功能。 四,包含部署视频和配套笔记

    Java后台+mysql数据库+Springboot+微信扫码点餐小程序

    Excel数据的批量导入与导出 二,小程序端技术选型 原生微信小程序 css3 JavaScript 三,Java后台技术点 管理后台 后台登录 饭店管理员 菜品类目 excel批量导入与导出 菜品管理 菜品批量导入与导出 订单管理 饭店...

    java日历记事本程序

    3. **test.xls**:可能是测试用例,用Excel格式存储,用于检验程序的某些功能,如课程表的导入导出。 4. **TEST-calendar_summer.LocalAddCourseTest.xml**:课程数据的测试文件,用于测试导入和导出功能。 5. **...

    JXL 学习笔记(看了就差不多了)

    在Java开发中,处理Excel文件是一个常见的需求,比如数据导入导出、报表生成等。JXL库作为一个轻量级的Java Excel API,为开发者提供了方便快捷的方式来读写Excel文件。本篇笔记将深入探讨JXL库的使用方法和核心功能...

    基于SSM的POI导入导出Excel实战

    本课程将给大家分享如何基于SSM实现POI导入导出Excel,并讲解目前企业级JavaWeb应用mvc三层模式的开发流程,可让初学者或者职场萌新掌握如何基于SSM整合第三方框架并采用mvc三层开发模式实现自己的业务模块!

    matlab导入excel代码-WithBeingIT:Java,注意事项

    matlab导入excel代码 WithBeingIT Java、Notes 用过纸质笔记本,用过本地文件,用过oneNote,用过有道云笔记。除了有道云笔记,均因维护不善而不了了之 后知后觉:目前认为,最适合做体系笔记的是Github 云端 活跃的...

    POI的学习笔记

    在Java中使用POI进行Excel操作,首先需要导入必要的包: ```java import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache....

    POI-EasyExcel笔记1

    当需要将Excel表中的信息录入到网站数据库时,EasyExcel提供了强大的功能。你可以定义一个监听器(Listener),该监听器会在读取每个行时被调用。读取Excel时,EasyExcel会将每一行的数据映射到你之前定义的Java...

    Matlab系列--Python,R,VBA,Java,Matlab,Go等语言基本语法学习笔记以及代码.zip

    标题中的“Matlab系列--Python,R,VBA,Java,Matlab,Go等语言基本语法学习笔记以及代码.zip”表明这是一个包含多种编程语言基础语法的学习资料集合。这些语言包括Matlab、Python、R、VBA、Java和Go,它们在信息技术...

    Excel导出demo

    在"POI导出Excel笔记"的博客中,可能会详细讲解以下关键知识点: 1. **初始化工作簿**:首先,你需要创建一个Workbook对象,这可以是XSSFWorkbook(用于.xlsx格式,属于新的OOXML格式)或HSSFWorkbook(用于.xls...

    有道笔记

    2. 多格式支持:有道笔记不仅支持文本笔记,还能导入和编辑PDF、Word、Excel等多种格式的文件,使得信息整合更加灵活。 3. 剪辑网页:其网页剪辑插件能保存整个网页内容,包括文字、图片和布局,方便后续查阅和研究...

    1512001066吴跟强实习笔记1

    - 使用Apache POI或jxl库处理Excel数据的导入导出,通过fieldMap参数连接实体类与Excel列头,实现数据的映射。 - 导出可以指定到本地文件或浏览器,导入选项可自定义,如工作表大小、唯一性检查等。 5. **代码...

    自学笔记自学笔记自学笔记自学笔记自学笔记

    - **功能描述**:提供基于模板的代码生成器,可以根据数据库表结构自动生成相关代码(如CRUD操作、Excel导入导出、树形结构、字典生成等)。 - **关键特性**:自动化代码生成、支持多种代码模板、提高开发效率。 ...

Global site tag (gtag.js) - Google Analytics