【问题标题】:Apache POI write time greater than 24Apache POI 写入时间大于 24
【发布时间】:2012-10-15 15:49:48
【问题描述】:

我想写一个excel文件。在这个文件中有一些列,我把时间值放在“11:21”之类的地方。在此列的最后一行,我想添加这些时间值并显示总计,例如“123:23”。为此,我使用以下代码:

HSSFCellStyle cellStyle = wb.createCellStyle();
                    cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("h:mm"));
                    c.setCellValue(DateUtil.convertTime("49:12"));
                    c.setCellStyle(cellStyle);

但它给了我以下错误: java.lang.IllegalArgumentException:错误的时间格式 '49:12' 预期为 'HH:MM' 或 'HH:MM:SS' - 小时值 (49) 超出允许范围 (0..23)

请帮帮我。

【问题讨论】:

    标签: java excel apache-poi


    【解决方案1】:

    这种方法对我有用:
    1.设置自定义数据格式[h]:mm
    2. 使用 SimpleDateFormat
    为您的时间获取 java.util.Date 对象 3. Excel 的纪元是 1900,因此请使用日历将 Date 对象中的年份设置为 1900
    4. 扣除 1 天后将单元格值设置为 Date 对象

    CreationHelper createHelper = wb.getCreationHelper();
    
    CellStyle hhmmStyle = wb.createCellStyle();
    hhmmStyle.setDataFormat(createHelper.createDataFormat().getFormat("[h]:mm"));
    
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
    
    xlsCell.setCellStyle(hhmmStyle);
    
    Date time = sdf.parse("49:00");
    Calendar cal = Calendar.getInstance();
    cal.setTime(time);
    cal.set(Calendar.YEAR, 1900);
    
    xlsCell.setCellValue(DateUtil.getExcelDate(cal.getTime())-1.0);
    

    【讨论】:

    • 感谢一吨的朋友,工作就像一个魅力。只是好奇为什么要扣除 1.0?
    【解决方案2】:

    尝试使用SimpleDateFormat

        SimpleDateFormat _24HourFormat = new SimpleDateFormat("HH:mm");
        SimpleDateFormat _12HourFormat = new SimpleDateFormat("hh:mm");
    

    例如

    SimpleDateFormat _24HourFormat = new SimpleDateFormat("HH:mm");
    Date date = _24HourFormat.parse("49:12");
    cell.setCellValue(date);
    

    【讨论】:

    • 获取类似“613671h 40m”的值
    【解决方案3】:

    您可以在数据的第一个位置添加撇号,以便将值设置为String,无需将值设置为Date

    c.setCellValue("'49:12");
    

    【讨论】:

    • 但我想使用这个总数和一列总数作为时间添加使用 excel sum 函数。比如 40:11 + 30:10=70:21。
    • 目前我手头没有 Apache POI,也许您可​​以尝试使用数据格式设置值 w/o。
    猜你喜欢
    • 2020-07-27
    • 2019-02-24
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    相关资源
    最近更新 更多