java通过poi读取excel中的日期类型

这篇具有很好参考价值的文章主要介绍了java通过poi读取excel中的日期类型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、问题分析

Java 读取Excel表格日期类型数据的时候,读出来的是这样的 12-十月-2020,而Excel中输入的是 2020/10/12 或 2020-10-12

poi处理excel时,当excel没有明确指明是哪个类型的数据时,poi很可能处理单元格的日期数据时就有可能是一串数字,而使用java程序基本无法转换。

Excel数据处理:

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

1、数值格式(CELL_TYPE_NUMERIC):

  1.纯数值格式:getNumericCellValue() 直接获取数据

2.日期格式:处理yyyy-MM-dd, d/m/yyyy h:mm, HH:mm 等不含文字的日期格式

  1.判断是否是日期格式:HSSFDateUtil.isCellDateFormatted(cell)

所有日期格式都可以通过getDataFormat()值来判断文章来源地址https://www.toymoban.com/news/detail-614989.html

yyyy-MM-dd----- 14
yyyy年m月d日--- 31
yyyy年m月------- 57
m月d日  ---------- 58
HH:mm----------- 20
h时mm分  ------- 32

2、代码提供:

	//获取单元格各类型值,返回字符串类型
    public static String getCellValueByCell(Cell cell) {
        //判断是否为null或空串
        if (cell==null || cell.toString().trim().equals("")) {
            return "";
        }
        String cellValue = "";
        int cellType=cell.getCellType();
        switch (cellType) {
        case Cell.CELL_TYPE_NUMERIC: // 数字
            short format = cell.getCellStyle().getDataFormat();
            if (DateUtil.isCellDateFormatted(cell)) {
                SimpleDateFormat sdf = null;  
                if (format == 20 || format == 32) {  
                    sdf = new SimpleDateFormat("HH:mm");  
                } else if (format == 14 || format == 31 || format == 57 || format == 58) {  
                    // 处理自定义日期格式:m月d日(通过判断单元格的格式id解决,id的值是58)  
                    sdf = new SimpleDateFormat("yyyy-MM-dd");  
                    double value = cell.getNumericCellValue();  
                    Date date = org.apache.poi.ss.usermodel.DateUtil  
                            .getJavaDate(value);  
                    cellValue = sdf.format(date);  
                }else {// 日期  
                    sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
                }  
                try {
                    cellValue = sdf.format(cell.getDateCellValue());// 日期
                } catch (Exception e) {
                    try {
                        throw new Exception("exception on get date data !".concat(e.toString()));
                    } catch (Exception e1) {
                        e1.printStackTrace();
                    }
                }finally{
                    sdf = null;
                }
            }  else {
                BigDecimal bd = new BigDecimal(cell.getNumericCellValue()); 
                cellValue = bd.toPlainString();// 数值 这种用BigDecimal包装再获取plainString,可以防止获取到科学计数值
            }
            break;
        case Cell.CELL_TYPE_STRING: // 字符串
            cellValue = cell.getStringCellValue();
            break;
        case Cell.CELL_TYPE_BOOLEAN: // Boolean
            cellValue = cell.getBooleanCellValue()+"";;
            break;
        case Cell.CELL_TYPE_FORMULA: // 公式
            cellValue = cell.getCellFormula();
            break;
        case Cell.CELL_TYPE_BLANK: // 空值
            cellValue = "";
            break;
        case Cell.CELL_TYPE_ERROR: // 故障
            cellValue = "ERROR VALUE";
            break;
        default:
            cellValue = "UNKNOW VALUE";
            break;
        }
        return cellValue;
    }

到了这里,关于java通过poi读取excel中的日期类型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java:读取excel文件中的内容(简单、详细、明确、有全部代码)

    注意: jxl 仅支持读取 .xls 文件,读 .xlsx 会报错! 在 pom.xml 中引入 jxl 的依赖 支持读取 xlsx 文件的 poi 依赖说明、使用方法及更多详细内容可以参考: Java读取excel的方式,一篇文章看懂(详细)

    2024年02月12日
    浏览(30)
  • JAVA POI的excel中包含图片进行读取保存,单张图片,多张图片

    ---------------------------------------------效果---------------------------------------------------------- 1.单张图片 2.多张图片

    2024年02月11日
    浏览(34)
  • Java Apache POI 小记(读取Word通过模板创建PPT)

    近期身边的一位朋友来寻求帮助,她在日常工作时,总是需要做一些重复的事情,所以想着是否能通过程序实现自动化的操作。 具体需求为,每天会收到一份固定格式的Word文件,然后根据其中的内容,填充到固定的PPT模板中,最终生成图片输出。 有了需求后,第一件事自然

    2024年01月19日
    浏览(36)
  • Java 通过POI快速导入带图片的excel并且图片不会丢失

    导入带图片的excel,这里也是研究了很久,在之前的博客中也有说明过,在项目使用过程中,发现很多时候 导入响应很慢 ,而且每次导入 图片都会丢失 几张,所以又花了点时间研究修改了下,具体如下: 这边在导入时,通过自定义注解,将excel读取到的数据转换到需要的实

    2024年02月01日
    浏览(35)
  • 【探讨】Java POI 处理 Excel 中的名称管理器

    最近遇到了一些导表的问题。原本的导表工具导不了使用名称管理器的Excel。 首先我们有两个Sheet。B1用的是名称管理器中的AAA, 而B2用的对应的公式。 第二个sheet,名为Test2: 这是一段简化的代码: 控制台的输出为: 这意味着无法解析这个命名统计后的值。 为啥公式可以执行

    2024年02月15日
    浏览(25)
  • Apache POI | Java操作Excel文件

    目录 1、介绍 2、代码示例 2.1、将数据写入Excel文件 2.2、读取Excel文件中的数据 🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法,初步涉猎Python人工智能开发和前端开发。 🦅主页:@逐梦苍穹 📕您的一

    2024年02月20日
    浏览(41)
  • 使用POI实现JAVA操作Excel文件

    https://poi.apache.org/components/index.html xls最大支持65536行、256列 xlsx最大支持1048576行、16384列 poi 操作xls poi-ooml操作xlsx 优点:过程中写入缓存,不操作磁盘,最后再一次性导入磁盘,速度快+ 缺点:但是只能写入65535条数据,超过就会报异常 优点:可以写较大数据量(超过655135条)

    2024年02月14日
    浏览(34)
  • Java中Excel文件解析(POI简介及基本使用)

    在Java技术生态圈中,可以进行Excel文件处理的主流技术包括: Apache POI 、 JXL 、 Alibaba EasyExcel 等。 其中各个技术都有最适合的场景 Apache POI 基于 DOM 方式进行解析,将文件直接加载内存,所以速度较快,适合 Excel 文件数据量不大的应用场景。 JXL 只支持Excel 2003以下版本,所以

    2024年02月08日
    浏览(35)
  • Java POI (2)—— Excel文件的上传与导出(实例演示)

             这里是一个demo的流程图,下面按照这个流程图做了一个简单的实现,有部分判断没有加上,实际操作中,可以根据自己的需求进行增加或者修改。并且此处还是在接受文件传入后将文件进行了下载,保存到本地的操作,这个要按照具体情况具体分析,看需求是否

    2024年02月11日
    浏览(37)
  • JAVA:使用POI SXSSFWorkbook方式导出Excel大数据文件

    Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java对Microsoft Office格式档案读和写的功能。POI组件可以提供Java操作Microsoft Office的API,导出格式为Office 2003时POI调用的HSSF包,导出格式为Office 2007时,调用XSSF包,而SXSSF包是POI3.8版本之上对XSSF的一个扩展,用

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包