POI读取Excel时报空指针错误

主要原因是多读数据,读到空表格或者类型问题(比如空字符串)

public boolean readExcel(String path) {
		FileInputStream file;
		try {
			file = new FileInputStream(path);
			try {
				workbook = new HSSFWorkbook(file);
				HSSFSheet sheet = workbook.getSheetAt(0);
				for(int row=1;row<=sheet.getLastRowNum();row++){
					HSSFRow sheetRow =  sheet.getRow(row);
					HSSFCell cell1 = sheetRow.getCell(0);
					
					System.out.println("**************");
					System.out.println("");
//					System.out.println(cell1);
					
					String collegecode = POIUtil.getInstance().getCellValue(cell1);
					
					System.out.println(collegecode);
					
					HSSFCell cell2 = sheetRow.getCell(1);
					
//					System.out.println(cell2);
					
					String college = POIUtil.getInstance().getCellValue(cell2);
					
					System.out.println(college);
					
					list.add(collegecode);
					list.add(college);
					map.put(row, list);
				}
				if(collgeService.saveExcelInfo(map)){
					return true;
				}
			} catch (IOException e) {
				e.printStackTrace();
				System.out.println("【POI异常上传失败...】");
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			System.out.println("【POI异常上传失败...】");
		}
		
		
		return false;
	}

注:POI是从0开始的。

package com.synuatp.core.util;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;

public class POIUtil
{
	private POIUtil(){}
	private static POIUtil poi= null;
	public static POIUtil getInstance(){
		if(poi==null){
			synchronized(POIUtil.class){
				if(poi==null){
					poi = new POIUtil();
				}
			}
		}
		return poi;
	}
	public String getCellValue(HSSFCell cell){  
        String value = null;  
        //简单的查检列类型  
//        System.out.println("cell.getCellType():"+cell.getCellType());
        switch(cell.getCellType())  {  
        	
            case HSSFCell.CELL_TYPE_STRING://字符串  
//            	System.out.println("HSSFCell.CELL_TYPE_STRING:"+HSSFCell.CELL_TYPE_STRING);
                value = cell.getRichStringCellValue().toString();  
                break;  
            case HSSFCell.CELL_TYPE_NUMERIC://数字  
//            	System.out.println("HSSFCell.CELL_TYPE_NUMERIC:"+HSSFCell.CELL_TYPE_NUMERIC);
                long dd = (long)cell.getNumericCellValue();  
                value = dd+"";  
                break;  
            case HSSFCell.CELL_TYPE_BLANK:  
//            	System.out.println("HSSFCell.CELL_TYPE_BLANK:"+HSSFCell.CELL_TYPE_BLANK);
                value = "";  
                break;     
            case HSSFCell.CELL_TYPE_FORMULA:  
//            	System.out.println("HSSFCell.CELL_TYPE_FORMULA:"+HSSFCell.CELL_TYPE_FORMULA);
                value = String.valueOf(cell.getCellFormula());  
                break;  
            case HSSFCell.CELL_TYPE_BOOLEAN://boolean型值  
//            	System.out.println("HSSFCell.CELL_TYPE_BOOLEAN:"+HSSFCell.CELL_TYPE_BOOLEAN);
                value = String.valueOf(cell.getBooleanCellValue());  
                break;  
            case HSSFCell.CELL_TYPE_ERROR:  
//            	System.out.println("HSSFCell.CELL_TYPE_ERROR:"+HSSFCell.CELL_TYPE_ERROR);
                value = String.valueOf(cell.getErrorCellValue());  
                break;  
            default:  
//            	System.out.println("default");
                break;  
        }  
        return value;  
    }  
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拥有必珍惜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值