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 2022/03/22 18:00:58 UTC

svn commit: r1899139 - in /poi/trunk/poi-ooxml/src: main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java test/java/org/apache/poi/xssf/usermodel/TestXSSFSheet.java

Author: fanningpj
Date: Tue Mar 22 18:00:57 2022
New Revision: 1899139

URL: http://svn.apache.org/viewvc?rev=1899139&view=rev
Log:
[bug-65973] fix for removing hyperlinks that span multiple cells

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

Modified: poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java?rev=1899139&r1=1899138&r2=1899139&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java (original)
+++ poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java Tue Mar 22 18:00:57 2022
@@ -3085,8 +3085,6 @@ public class XSSFSheet extends POIXMLDoc
         if (hyperlinks != null) {
             for (XSSFHyperlink link : new ArrayList<>(hyperlinks)) {
                 CellRangeAddress range = CellRangeAddress.valueOf(link.getCellRef());
-                //TODO handle case where hyperlink ref spans many rows (https://bz.apache.org/bugzilla/show_bug.cgi?id=65973)
-                //but where only some rows are being removed and others are not (range will need to be modified)
                 if (range.getFirstRow() == range.getLastRow() && rowsToRemoveSet.contains(range.getFirstRow())) {
                     removeHyperlink(link);
                 } else if (range.getFirstRow() != range.getLastRow()) {

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFSheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFSheet.java?rev=1899139&r1=1899138&r2=1899139&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFSheet.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFSheet.java Tue Mar 22 18:00:57 2022
@@ -2325,6 +2325,29 @@ public final class TestXSSFSheet extends
         }
     }
 
+    @Test
+    void testRowShiftWithHyperlink3() throws IOException {
+        try (XSSFWorkbook wb = createWorkbookForRowShiftWithHyperlink1(false)) {
+            XSSFSheet sheet = wb.getSheetAt(0);
+            List<XSSFHyperlink> hyperlinks = sheet.getHyperlinkList();
+            assertEquals(1, hyperlinks.size());
+            assertEquals("B1:B2", hyperlinks.get(0).getCellRef());
+            assertEquals(3, sheet.getLastRowNum());
+
+            sheet.shiftRows(2, 3, -1);
+            assertEquals(2, sheet.getLastRowNum());
+            XSSFRow row0 = sheet.getRow(0);
+            XSSFRow row1 = sheet.getRow(1);
+            XSSFRow row2 = sheet.getRow(2);
+            assertEquals("row0", row0.getCell(0).getStringCellValue());
+            assertEquals("row2", row1.getCell(0).getStringCellValue());
+            assertEquals("row3", row2.getCell(0).getStringCellValue());
+            List<XSSFHyperlink> hyperlinks2 = sheet.getHyperlinkList();
+            assertEquals(1, hyperlinks2.size());
+            assertEquals("B1", hyperlinks2.get(0).getCellRef());
+        }
+    }
+
     private XSSFWorkbook createWorkbookForRowShiftWithHyperlink1(boolean hyperlinkOneRow) {
         XSSFWorkbook wb = new XSSFWorkbook();
         XSSFSheet sheet = wb.createSheet("Sheet1");



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