java获取excel里面的内容(点提取)

1.HSSF获取

File file = new File(filePath);
FileInputStream inputExcel = null;
inputExcel = new FileInputStream(file);
//xls读取
POIFSFileSystem fsExcel = null;  
HSSFWorkbook wbExcel = null;  
fsExcel = new POIFSFileSystem(inputExcel);
wbExcel = new HSSFWorkbook(fsExcel);
//0为sheet页
HSSFSheet sheet = wbExcel.getSheetAt(0);
2.XSSF读取

File file = new File(filePath);
FileInputStream inputExcel = null;
inputExcel = new FileInputStream(file);
//xlsx读取
XSSFWorkbook XSSFwb = new XSSFWorkbook(inputExcel);
XSSFSheet sheet = XSSFwb.getSheetAt(0); 
inSaveExcel(null,sheet,tokenID,sampleNo);

-----------excel点提取---------------------

点提取首先确定好需要提取的单元格

例如 String []cellPosList = {“A12”,“B2”,“C1”};

List<String> strList = new ArrayList<String>();
for (String s : cellPosList){
	String st = null;
	//指定单元格(点读取)
	if(HSSFsheet != null){
		HSSFRow rowNumber = HSSFsheet.getRow(SMSReportUtils.findCurrentRow(s));
		HSSFCell cell = rowNumber.getCell(SMSReportUtils.findCurrentColumn(s));
		st = getCellValue(cell);
	}
	if(XSSFsheet != null){
	XSSFRow row = XSSFsheet.getRow(SMSReportUtils.findCurrentRow(s));
	XSSFCell cell = row.getCell(SMSReportUtils.findCurrentColumn(s)); 
	st = getCellValue(cell);
	}
	if(StringUtils.isBlank(st)){
	st = " ";
	}
	strList.add(st);
}
根据单元格的type获取相应的value

public static String getCellValue(Cell cell){
		String value = null;
		if(cell != null){
			switch(cell.getCellType()){
			case HSSFCell.CELL_TYPE_FORMULA:
				cell.getCellFormula(); 	
				try {
					value = String.valueOf(cell.getNumericCellValue());
				} catch (IllegalStateException e) {
					value = String.valueOf(cell.getRichStringCellValue());
				}
				break;
			case HSSFCell.CELL_TYPE_NUMERIC:
				int style = cell.getCellStyle().getDataFormat(); 
				if (HSSFDateUtil.isCellDateFormatted(cell)) { 
					Date date = cell.getDateCellValue();  
					switch (style) {  
                    case 178:  
                        value = new SimpleDateFormat("yyyy'年'M'月'd'日'").format(date);  
                        break;  
                    case 14:  
                        value = new SimpleDateFormat("yyyy/MM/dd").format(date);  
                        break;  
                    case 179:  
                        value = new SimpleDateFormat("yyyy/MM/dd HH:mm").format(date);  
                        break;  
                    case 181:  
                        value = new SimpleDateFormat("yyyy/MM/dd HH:mm a ").format(date);  
                        break;  
                    case 22:  
                        value = new SimpleDateFormat(" yyyy/MM/dd HH:mm:ss ").format(date);  
                        break;  
                    default:  
                        break;  
                    } 
				}else{
					HSSFDataFormatter dataFormatter = new HSSFDataFormatter();
				    String cellFormatted = dataFormatter.formatCellValue(cell);
					//double dou = cell.getNumericCellValue();
					//BigDecimal bd = new BigDecimal(Double.toString(dou)); //读取-0.000125的值等等。。。
					//value = bd.toPlainString();	
				    value = cellFormatted;
				}
				break;
			case HSSFCell.CELL_TYPE_STRING:
				value = String.valueOf(cell.getStringCellValue());
				break;
			}
		}
		return value;
	}





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值