diff --git a/poi/src/main/java/org/apache/poi/ss/usermodel/DateUtil.java b/poi/src/main/java/org/apache/poi/ss/usermodel/DateUtil.java index 6cbac9e0fb..42034ec000 100644 --- a/poi/src/main/java/org/apache/poi/ss/usermodel/DateUtil.java +++ b/poi/src/main/java/org/apache/poi/ss/usermodel/DateUtil.java @@ -727,6 +727,7 @@ public class DateUtil { case 0x0f: case 0x10: case 0x11: + // the 0x12 to 0x15 formats are time (only) formats case 0x12: case 0x13: case 0x14: diff --git a/poi/src/test/java/org/apache/poi/ss/util/BaseTestCellUtilCopy.java b/poi/src/test/java/org/apache/poi/ss/util/BaseTestCellUtilCopy.java index ea214e815d..14d3fa00a1 100644 --- a/poi/src/test/java/org/apache/poi/ss/util/BaseTestCellUtilCopy.java +++ b/poi/src/test/java/org/apache/poi/ss/util/BaseTestCellUtilCopy.java @@ -146,6 +146,33 @@ public abstract class BaseTestCellUtilCopy { wb.close(); } + @Test + public final void testCopyCellTime() throws IOException { + try( + Workbook srcWb = createNewWorkbook(); + Workbook destWb = createNewWorkbook() + ) { + final Row rowS = srcWb.createSheet("Sheet1").createRow(0); + final Row rowD = destWb.createSheet("Sheet1").createRow(0); + srcCell = rowS.createCell(0); + destCell = rowD.createCell(0); + + srcCell.setCellValue(22.0/24.0); + + final CellStyle style = srcWb.createCellStyle(); + style.setDataFormat((short) 0x12); // time format + srcCell.setCellStyle(style); + + final CreationHelper createHelper = srcWb.getCreationHelper(); + + final CellCopyPolicy policy = new CellCopyPolicy.Builder().build(); + CellUtil.copyCell(srcCell, destCell, policy, new CellCopyContext()); + + assertEquals(srcCell.getNumericCellValue(), destCell.getNumericCellValue()); + assertEquals(srcCell.getCellStyle().getDataFormatString(), destCell.getCellStyle().getDataFormatString()); + } + } + private void setUp_testCopyCellFrom_CellCopyPolicy() { @SuppressWarnings("resource") final Workbook wb = createNewWorkbook();