我想写一个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)
请帮帮我。
答案 0 :(得分:3)
这种方法对我有用:
1.设置自定义数据格式[h]:mm
2.使用SimpleDateFormat为您的时间获取java.util.Date对象
3. Excel的纪元是1900年,因此使用日历
将日期对象中的年份设置为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 :(得分: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)
您可以在数据的第一个位置添加撇号,以便将值设置为String
,无需将值设置为Date
。
c.setCellValue("'49:12");