Author: fanningpj
Date: Thu Feb 13 10:53:16 2025
New Revision: 1923780

URL: http://svn.apache.org/viewvc?rev=1923780&view=rev
Log:
[bug-69583] when copying cells with dates - prefer using the numeric data 
directly

Modified:
    poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DateUtil.java
    poi/trunk/poi/src/test/java/org/apache/poi/ss/util/BaseTestCellUtilCopy.java

Modified: poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DateUtil.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DateUtil.java?rev=1923780&r1=1923779&r2=1923780&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DateUtil.java 
[UTF-8] (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DateUtil.java 
[UTF-8] Thu Feb 13 10:53:16 2025
@@ -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:

Modified: 
poi/trunk/poi/src/test/java/org/apache/poi/ss/util/BaseTestCellUtilCopy.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/ss/util/BaseTestCellUtilCopy.java?rev=1923780&r1=1923779&r2=1923780&view=diff
==============================================================================
--- 
poi/trunk/poi/src/test/java/org/apache/poi/ss/util/BaseTestCellUtilCopy.java 
(original)
+++ 
poi/trunk/poi/src/test/java/org/apache/poi/ss/util/BaseTestCellUtilCopy.java 
Thu Feb 13 10:53:16 2025
@@ -146,6 +146,33 @@ public abstract class BaseTestCellUtilCo
         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();



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to