我有一份工作,必须在 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/