You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by fa...@apache.org on 2021/07/22 15:40:56 UTC

svn commit: r1891722 - in /poi/trunk/poi-ooxml/src: main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java test/java/org/apache/poi/xssf/TestXSSFCloneSheet.java

Author: fanningpj
Date: Thu Jul 22 15:40:56 2021
New Revision: 1891722

URL: http://svn.apache.org/viewvc?rev=1891722&view=rev
Log:
[bug-64759] ignore unknown relationships when cloning sheets

Modified:
    poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
    poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/TestXSSFCloneSheet.java

Modified: poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java?rev=1891722&r1=1891721&r2=1891722&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java (original)
+++ poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java Thu Jul 22 15:40:56 2021
@@ -688,9 +688,12 @@ public class XSSFWorkbook extends POIXML
     }
 
     /**
+     * Modified in POI 5.0.1 to only log issues with unknown relationship types
+     * - see https://bz.apache.org/bugzilla/show_bug.cgi?id=64759
+     *
      * @since 3.14-Beta1
      */
-    private static void addRelation(RelationPart rp, POIXMLDocumentPart target) {
+    private static boolean addRelation(RelationPart rp, POIXMLDocumentPart target) {
         PackageRelationship rel = rp.getRelationship();
         if (rel.getTargetMode() == TargetMode.EXTERNAL) {
             target.getPackagePart().addRelationship(
@@ -699,10 +702,12 @@ public class XSSFWorkbook extends POIXML
             XSSFRelation xssfRel = XSSFRelation.getInstance(rel.getRelationshipType());
             if (xssfRel == null) {
                 // Don't copy all relations blindly, but only the ones we know about
-                throw new POIXMLException("Can't clone sheet - unknown relation type found: "+rel.getRelationshipType());
+                LOG.atWarn().log("Can't clone sheet relationship (some data will be lost in the cloned sheet) - unknown relation type found: {}", rel.getRelationshipType());
+                return false;
             }
             target.addRelation(rel.getId(), xssfRel, rp.getDocumentPart());
         }
+        return true;
     }
 
     /**

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/TestXSSFCloneSheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/TestXSSFCloneSheet.java?rev=1891722&r1=1891721&r2=1891722&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/TestXSSFCloneSheet.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/TestXSSFCloneSheet.java Thu Jul 22 15:40:56 2021
@@ -118,4 +118,14 @@ class TestXSSFCloneSheet  extends BaseTe
         }
     }
 
+    @Test
+    void test64759() throws IOException {
+        try (Workbook template_wb = XSSFTestDataSamples.openSampleWorkbook("right-to-left.xlsx")) {
+            Sheet template_sh = template_wb.getSheetAt(0);
+            assertNotNull(template_sh);
+            Sheet source_sh = template_wb.cloneSheet(0);
+            assertNotNull(source_sh);
+        }
+    }
+
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org