2012-10-15 88 views
1

我想寫一個excel文件。在這個文件中有一些列我把時間值如「11:21」。在本專欄的最後一行中,我想添加這些時間值並顯示「123:23」之類的總數。爲此,我現在用的是下面的代碼:Apache POI寫入時間大於24

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

您可以在數據的第一個位置添加撇號,以將值設置爲String,無需將該值設置爲Date

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

後您的Date對象設定年至1900年,但我想用這個總量和使用excel求和函數添加另一列作爲時間。像40:11 + 30:10 = 70:21。 – vikas27

+0

我目前沒有手頭上的Apache POI,也許您可​​以嘗試使用數據格式設置W/O值。 –

1

嘗試使用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); 
2

這種方式爲我工作:
1.設置自定義的數據格式[H]:毫米
2.使用SimpleDateFormat爲您的時間獲取java.util.Date對象
3. Excel的時期是1900年,因此,使用日曆
4.設置單元格的值作爲Date對象扣除1天

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);