apache poi excel小时格式设置单元格值java

我正在使用Excel生成Excel,并在Excel中执行了所有function,但是会出现一个问题。 我想设置一个像HH:MM的单元格值,而不是date。 我有一个像12:45,36:30,102:50的string。 对于每个单元格,我都希望在Excel中检测到这些单元格的时间格式大于24小时,如果我select这些单元格,则在Excel上显示小时数。 我不知道该怎么做。 我发现了一个类似的post( HH:MM:SS xls使用Apache POI阅读 ),但是这篇文章只介绍了如何读取这些单元格。 我想设置一个单元格值,比如25:00,205:00,152:30这样的只有几小时和几分钟的格式。

你可以帮我吗? 我真的很感激你的效果!

促进对答案的评论….

Excel自1900年或1904年起将整数date存储起来,具体取决于设置,…(这里有一些闰年问题)。 Excel将时间存储为一天中的几分之一。 所以,在一个1900窗口的文件,根据使用的格式string

0.1 = 02:24:00 0.5 = 12:00:00 1.5 = 1900-01-02 12:00:00 1.5 = 36:00:00 

所以,如果你想存储和显示36小时,计算一天中的一小部分(1.5),然后应用格式化string,它支持> 36小时。 格式为HH:MM ,你会得到12:00 。 格式为[HH]:MM ,你会得到36:00

使用Excel来计算出你需要的格式string – POI只是把你给它的格式string写入文件,Excel就像把它写在Excel中一样进行渲染!

最后我从@Gagravrr答案得到的解决scheme

下面的代码转换12:00至0.5或东西

  Date inserted_date = time_format.parse((String) obj); CellStyle cellStyle = workbook.createCellStyle(); cellStyle.setDataFormat(createHelper.createDataFormat().getFormat("[HH]:MM")); Calendar calendar = Calendar.getInstance(); calendar.setTime(inserted_date); int hours = calendar.get(Calendar.HOUR_OF_DAY); int minutes = calendar.get(Calendar.MINUTE); //System.out.println("\nHOUR :"+hours+"\n"); //System.out.println("\nMINS :"+minutes+"\n"); //System.out.println("\nCALC :"+ hours/24d+(minutes/60d)/24d +"\n"); cell.setCellValue(hours / 24d + (minutes / 60d) / 24d); cell.setCellStyle(cellStyle); 

该代码只在Excel表格中插入时间和自动和选中的单元格。