如何使用自定义格式填充 Excel 文档中的单元格

How do I fill a cell in an Excel document with a custom format

我有一份工作,我必须在我工作的时间填写 Excel sheet,并且我需要将该文件上传到保管箱地图。我想制作一个自动为我做这件事的程序。现在可以将文件上传到保管箱,但我想通过 java 应用程序更改 Excel 文件中的单元格。 这是我的 java 代码:

    InputStream inp = new FileInputStream("name.xls");
    Workbook wb = WorkbookFactory.create(inp);
    Sheet sheet = wb.getSheetAt(0);
    Row row= sheet.getRow(7);
    Cell cell = row.getCell(1);
    String week = cell.getRichStringCellValue().getString();
    cell.setCellValue("18:00"); 
    FileOutputStream fileOut = new FileOutputStream("name.xls");
    wb.write(fileOut);
    fileOut.close();

我可以用 18:00 填充单元格,但问题是单元格的格式是自定义的。当我查看自定义格式时,它说它使用 [u]:mm。当我填写 18:00 时,它会将 18:00 放入单元格中,但它仍位于单元格的左侧而不是右侧,因此我认为格式不正确。所以我的问题是,如何使用自定义格式正确填充单元格。

Apache POI documentation on custom formats

要设置一个单元格来保存时间18:00,那么你应该做的是

// Format to hold a time
DataFormat format = wb.createDataFormat();
CellStyle style = wb.createCellStyle();
style.setDataFormat(format.getFormat("HH:MM"));

// Set the cell to hold 18:00 and style
Cell cell = row.getCell(1);
cell.setCellValue(18.0/24.0);
cell.setCellStyle(style);

Excel中的时间是一整天的一小部分,因此对于18:00您需要设置(18/24),然后对其应用时间样式

或者,创建一个 Java 日期对象并设置它,如果更容易的话