Apache POI写入时间大于24

我想写一个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)

请帮帮我。

这种方法对我有用:
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); 

尝试使用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); 

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

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