Java 读取excel 文件

本文介绍如何利用Java的Apache POI库实现从Excel文件批量导入数据到系统中的过程。详细展示了通过读取Excel表格内容,并将其转换为具体业务对象的方式,包括数据校验、错误提示等细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我用poi实现

doImport(String url) throws Exception{
			 FileInputStream  file=new FileInputStream(url);//获取excel文件
			 HSSFWorkbook hssfworkbook = new HSSFWorkbook(file);
			 HSSFSheet hssfsheet = hssfworkbook.getSheetAt(0);//第一个工作表
			 Map<String, Object> map=new HashMap<String, Object>();
			 StringBuffer errorMessage=new StringBuffer();//错误信息
			 StringBuffer wornMessage=new StringBuffer();//警告信息
			
			 String str="";
	        	 
	        	//遍历该行所有的行,j表示行数 getPhysicalNumberOfRows行的总数
	        	 ArrayList<MetadataPO> list=new ArrayList<MetadataPO>();//创建List 集合
	        	 MetadataPO mePo = null;
	        	 //列坐标
	        	
	        	 Row row=null;
	        	 for(int j=1;j<hssfsheet.getPhysicalNumberOfRows();j++){
	        		int t=j+1;//行坐标
	        		//行坐标
	        		int k=0;
	        		 mePo=new MetadataPO();
	        		 row = hssfsheet.getRow(j);
	        		 if(row==null){
	        			 wornMessage.append("提示:\n"+t+" 行没有数据。\n");
	        			 break;
	        		 }
	        		 /** *//**将EXCEL中的第 j 行,第一列的值插入到实例中*/
	        		//获取第一行第一列
	        		 //1判断元数据名称
	        		 
	        		 if(row.getCell(k)==null){
	        			 errorMessage.append("错误提示:元数据名称不能为空 \n"+"错误:("+t+"行,"+1+"列)\n");
	        			 break;
	        		 }else{
	        			 //设置元数据名称,取消前后的空格
	        			 mePo.setName(row.getCell(k).getStringCellValue().trim());
	        		 }
	        		 k++;
	        		 //2元数据的中文名称
	        		 if(row.getCell(k).getStringCellValue().equals("")||row.getCell(k).getStringCellValue()==""||"null".equals(row.getCell(k).getStringCellValue())){
	        			 errorMessage.append("错误提示:元数据中文名称不能为空 \n"+"错误:("+t+"行,"+2+"列)\n");
	        			 break;
	        		 }else{
	        			 mePo.setDisplaylabelZh(row.getCell(k).getStringCellValue().trim());
	        		 }
	        		………………………N 行对数据的判断……………………………
	        		list.add(mePo);
	        	 }
	        	 
	        	 int z=hssfsheet.getPhysicalNumberOfRows();
	        	 int nextLine=list.size()+1;
	        	 if(list.size()<z-1){
	        		 errorMessage.append("导入提示:\n"+"成功导入"+list.size()+"条数据,请根据提示检查第:"+nextLine+"行数据");
	        	 }else{
	        		 errorMessage.append("导入提示:\n"+"成功导入"+list.size()+"条数据");
	        	 }
	        	 map.put("dataList", list);
	        	 map.put("wornMessage", wornMessage);
	        	 map.put("errorMessage", errorMessage);
	        	 return map;
	         }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值