Java利用Poi读取excel并对所有类型进行处理

 更新时间:2024年01月30日 10:19:38   作者:进击的A_bo  
这篇文章主要为大家详细介绍了Java利用Poi读取excel并对所有类型进行处理的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下

1.最近做了一个批量导入功能 , 然后发现poi读取excel的日期类型会出现点问题 , 因为我的需求是需要区分出

 yyyy/MM/dd  ,HH:mm:ss ,yyyy/MM/dd HH:mm:ss

2.日期,数字的类型都是数值的, 所有需要对每一个进行区分

根据cell.getCellStyle().getDataFormat() 方法  可以得到excel 格子中的short类型的值 ,从断点中得知

yyyy/MM/dd 格式的值是 14

HH:mm:ss  格式的值是 21

yyyy/MM/dd HH:mm:ss 格式的值是 22

double 和 Int 都是 0 (我都转成转成String 再去做进一步处理)

下面是代码可以把值写成常量定义

public static String getCellValue(Cell cell) {
        String cellValue = "";
        if (cell == null) {
            return cellValue;
        }
        // 判断数据的类型
        switch (cell.getCellType()) {
        case Cell.CELL_TYPE_NUMERIC: // 数字
            //short s = cell.getCellStyle().getDataFormat();
            if (HSSFDateUtil.isCellDateFormatted(cell)) {// 处理日期格式、时间格式
                SimpleDateFormat sdf = null;
                // 验证short值
                if (cell.getCellStyle().getDataFormat() == 14) {
                    sdf = new SimpleDateFormat("yyyy/MM/dd");
                } else if (cell.getCellStyle().getDataFormat() == 21) {
                    sdf = new SimpleDateFormat("HH:mm:ss");
                } else if (cell.getCellStyle().getDataFormat() == 22) {
                    sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
                } else {
                    throw new RuntimeException("日期格式错误!!!");
                }
                Date date = cell.getDateCellValue();
                cellValue = sdf.format(date);
            } else if (cell.getCellStyle().getDataFormat() == 0) {//处理数值格式
                cell.setCellType(Cell.CELL_TYPE_STRING);
                cellValue = String.valueOf(cell.getRichStringCellValue().getString());
            }
            break;
        case Cell.CELL_TYPE_STRING: // 字符串
            cellValue = String.valueOf(cell.getStringCellValue());
            break;
        case Cell.CELL_TYPE_BOOLEAN: // Boolean
            cellValue = String.valueOf(cell.getBooleanCellValue());
            break;
        case Cell.CELL_TYPE_FORMULA: // 公式
            cellValue = String.valueOf(cell.getCellFormula());
            break;
        case Cell.CELL_TYPE_BLANK: // 空值
            cellValue = null;
            break;
        case Cell.CELL_TYPE_ERROR: // 故障
            cellValue = "非法字符";
            break;
        default:
            cellValue = "未知类型";
            break;
        }
        return cellValue;
    }

到此这篇关于Java利用Poi读取excel并对所有类型进行处理的文章就介绍到这了,更多相关Java Poi读取excel内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中两个List之间的比较方法(差集、交集和并集)

    Java中两个List之间的比较方法(差集、交集和并集)

    在业务的开发过程中会经常用到两个List集合相互取值的情况,下面这篇文章主要给大家介绍了关于Java中两个List之间的比较方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • @FeignClient注入找不到异常如何解决

    @FeignClient注入找不到异常如何解决

    这篇文章主要介绍了@FeignClient注入找不到异常的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Java 消息的可靠性投递实践建议

    Java 消息的可靠性投递实践建议

    文章详细介绍了消息可靠性投递(ReliableDelivery)的概念、面临的挑战及关键实现机制,生产端通过事务机制、确认机制、本地消息表和消息持久化等技术保证消息不丢失、不重复、按顺序传递,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • 在IDEA中如何设置最多显示文件标签个数

    在IDEA中如何设置最多显示文件标签个数

    在使用IDEA进行编程时,可能会同时打开多个文件,当文件过多时,文件标签会占据大部分的IDEA界面,影响我们的编程效率,因此,我们可以通过设置IDEA的文件标签显示个数,来优化我们的编程环境,具体的设置方法如下
    2024-10-10
  • Java基于LoadingCache实现本地缓存的示例代码

    Java基于LoadingCache实现本地缓存的示例代码

    本文主要介绍了Java基于LoadingCache实现本地缓存的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Spring观察者模式之事件发布订阅实现和源码详解

    Spring观察者模式之事件发布订阅实现和源码详解

    这篇文章主要介绍了Spring观察者模式之事件发布订阅实现和源码详解,Spring认为发布订阅主题,其实可以理解为事件驱动的编码,先来实现以下Spring容器中的事件发布订阅,需要的朋友可以参考下
    2024-01-01
  • Java内存溢出实现原因及解决方案

    Java内存溢出实现原因及解决方案

    这篇文章主要介绍了Java内存溢出实现原因及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • java 二进制数据与16进制字符串相互转化方法

    java 二进制数据与16进制字符串相互转化方法

    今天小编就为大家分享一篇java 二进制数据与16进制字符串相互转化方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Java获取视频时长和封面截图

    Java获取视频时长和封面截图

    这篇文章主要为大家详细介绍了如何使用Java获取视频时长和封面截图功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-03-03
  • SpringMVC使用MultipartFile 实现异步上传方法介绍

    SpringMVC使用MultipartFile 实现异步上传方法介绍

    这篇文章主要介绍了SpringMVC使用MultipartFile 实现异步上传方法介绍,涉及pom依赖的添加,配置文件的修改等具体操作代码,需要的朋友可以了解下。
    2017-09-09

最新评论