poi导入读取时间格式问题(当前列既有日期也有文本)

这篇博客探讨了在使用Apache POI处理Excel时遇到的日期格式问题。内容指出Excel将日期和时间以数值形式存储,并介绍了如何通过getDataFormat()值来识别不同日期格式,如'yyyy-MM-dd'(14)、'yyyy年m月d日'(31)等。文章还提到了一个POI的导入导出工具类,并提到在实体类属性上使用@ExcelField注解来指定字段标题和对齐方式。
摘要由CSDN通过智能技术生成

参考文档

Excel数据处理:

Excel存储日期、时间均以数值类型进行存储,读取时POI先判断是是否是数值类型,再进行判断转化

日期格式都可以通过getDataFormat()值来判断

yyyy-MM-dd----- 14

yyyy年m月d日--- 31

yyyy年m月------- 57

m月d日  ---------- 58

HH:mm----------- 20

h时mm分  ------- 32

public Object getCellValue(Row row, int column){
		Object val = "";
		try{
			Cell cell = row.getCell(column);
			if (cell != null){
				if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC){
					//val = cell.getNumericCellValue();
                    short format = row.getCell(column).getCellStyle().getDataFormat();
                    //判断日期个格式是否是 2017/01/01 这样
                    /*
                     * 14 yyyy-MM-dd / 2017/01/01
                     * 31 yyyy年m月d日
                     * */
                    Date date =null;
                    if(format == 14 || format == 31){
                         date = HSSFDateUtil.getJavaDate(row.getCell(column).getNumericCellValue());
                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
                        String time = sdf.format(date);
                        val = time;
                    }else{
                        //文本
                        cell.setCellType(Cell.CELL_TYPE_STRING);
                        val = cell.getStringCellValue();
                    }


                }else if (cell.getCellType() == Cell.CELL_TYPE_STRING){
					val = cell.getStringCellValue();
				}else if (cell.getCellType() == Cell.CELL_TYPE_FORMULA){
					val = cell.getCellFormula();
				}else if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN){
					val = cell.getBooleanCellValue();
				}else if (cell.getCellType() == Cell.CELL_TYPE_ERROR){
					val = cell.getErrorCellValue();
				}
			}
		}catch (Exception e) {
			return val;
		}
		return val;
	}

下面提供excelpoi的导入导出工具类:

<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>3.9</version>
        </dependency>

需要在实体类属性加注解@ExcelField(title="船东", align=2, sort=5)


package net.huadong.common.utils.excel
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值