1

我想写一个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: Bad time format '49:12' expected 'HH:MM' or 'HH:MM:SS' - hour value (49) is outside the allowed range(0 ..23)

请帮我。

4

3 回答 3

4

这种方法对我有用:
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);
于 2012-11-08T05:30:31.407 回答
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);
于 2012-10-15T16:02:56.650 回答
-1

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

c.setCellValue("'49:12");
于 2012-10-15T15:56:26.990 回答