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

标签 java excel apache-poi

我有一份工作,必须在 Excel 工作表上填写我的工作时间,并且需要将该文件上传到 Dropbox map 。我想制作一个程序来自动为我执行此操作。现在可以将文件上传到 dropbox,但我想通过 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 Date 对象,并设置它(如果更容易的话)

关于java - 如何使用自定义格式填充 Excel 文档中的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28023047/

相关文章:

java - 每次有 2 个元素的 for 循环中数组索引超出范围

java - Gerrit REST API 中的查询超过 500 条限制

c# - 是否有用于读取 excel 电子表格文件的 .NET Core 兼容库?

java - Apache poi excel 注释换行文本

java - 生成新的 Excel,同时保留模板 Excel 文件中的旧公式

java - 如何在迭代时从 "ConcurrentModificationException"中删除元素时避免 `ArrayList` ?

Java 日期时间格式混淆

excel - 我可以在不使用中键单击的情况下使 Excel 平滑滚动吗?

r:通过将 Excel 文件作为列表传递到 dplyr 来编译它们

java - 为什么我的 Apache POI 代码无法读取 excel 工作表?