summaryrefslogtreecommitdiffstats
path: root/poi-ooxml
diff options
context:
space:
mode:
authorPJ Fanning <fanningpj@apache.org>2021-08-10 19:40:03 +0000
committerPJ Fanning <fanningpj@apache.org>2021-08-10 19:40:03 +0000
commitbf6184fd805e4c3e70a58ed2cf61ca59f29bc263 (patch)
tree1b76f28cec5be600f3c6ab42d97db5b3d3e17f83 /poi-ooxml
parentd7dd7abf78685d5e797002190a5923b3221c2623 (diff)
downloadpoi-bf6184fd805e4c3e70a58ed2cf61ca59f29bc263.tar.gz
poi-bf6184fd805e4c3e70a58ed2cf61ca59f29bc263.zip
[bug-65490] add support for removing hyperlink directly from sheet
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1892189 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'poi-ooxml')
-rw-r--r--poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java18
-rw-r--r--poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFBugs.java44
2 files changed, 41 insertions, 21 deletions
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
index bf3e7396d3..41a434ae43 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
@@ -3356,16 +3356,30 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
}
/**
- * Register a hyperlink in the collection of hyperlinks on this sheet
+ * Register a hyperlink in the collection of hyperlinks on this sheet.
+ * Use {@link XSSFCell#setHyperlink(Hyperlink)} if the hyperlink is just for that one cell.
+ * Use this method if you want to add a Hyperlink that covers a range of sells. If you use
+ * this method, you will need to call {@link XSSFHyperlink#setCellReference(String)} to
+ * explicitly cell the value, eg B2 or B2:C3 (the 4 cells with B2 at top left and C3 at bottom right)
*
* @param hyperlink the link to add
*/
- @Internal
public void addHyperlink(XSSFHyperlink hyperlink) {
hyperlinks.add(hyperlink);
}
/**
+ * Remove a hyperlink in the collection of hyperlinks on this sheet.
+ * {@link XSSFCell#removeHyperlink()} can be used if the hyperlink is just for that one cell.
+ *
+ * @param hyperlink the link to remove
+ * @since POI 5.0.1
+ */
+ public void removeHyperlink(XSSFHyperlink hyperlink) {
+ hyperlinks.remove(hyperlink);
+ }
+
+ /**
* Removes a hyperlink in the collection of hyperlinks on this sheet
*
* @param row row index
diff --git a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFBugs.java
index ea5803bc90..febe557ad0 100644
--- a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFBugs.java
+++ b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFBugs.java
@@ -1790,29 +1790,35 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues {
try (XSSFWorkbook wb = new XSSFWorkbook()) {
XSSFSheet sheet = wb.createSheet();
XSSFCreationHelper creationHelper = wb.getCreationHelper();
- XSSFHyperlink hyperlink;
// Try with a cell reference
- hyperlink = creationHelper.createHyperlink(HyperlinkType.URL);
- sheet.addHyperlink(hyperlink);
- hyperlink.setAddress("http://myurl");
- hyperlink.setCellReference("B4");
- assertEquals(3, hyperlink.getFirstRow());
- assertEquals(1, hyperlink.getFirstColumn());
- assertEquals(3, hyperlink.getLastRow());
- assertEquals(1, hyperlink.getLastColumn());
+ XSSFHyperlink hyperlink1 = creationHelper.createHyperlink(HyperlinkType.URL);
+ sheet.addHyperlink(hyperlink1);
+ hyperlink1.setAddress("http://myurl");
+ hyperlink1.setCellReference("B4");
+ assertEquals(3, hyperlink1.getFirstRow());
+ assertEquals(1, hyperlink1.getFirstColumn());
+ assertEquals(3, hyperlink1.getLastRow());
+ assertEquals(1, hyperlink1.getLastColumn());
// Try with explicit rows / columns
- hyperlink = creationHelper.createHyperlink(HyperlinkType.URL);
- sheet.addHyperlink(hyperlink);
- hyperlink.setAddress("http://myurl");
- hyperlink.setFirstRow(5);
- hyperlink.setFirstColumn(3);
-
- assertEquals(5, hyperlink.getFirstRow());
- assertEquals(3, hyperlink.getFirstColumn());
- assertEquals(5, hyperlink.getLastRow());
- assertEquals(3, hyperlink.getLastColumn());
+ XSSFHyperlink hyperlink2 = creationHelper.createHyperlink(HyperlinkType.URL);
+ sheet.addHyperlink(hyperlink2);
+ hyperlink2.setAddress("http://myurl");
+ hyperlink2.setFirstRow(5);
+ hyperlink2.setFirstColumn(3);
+
+ assertEquals(5, hyperlink2.getFirstRow());
+ assertEquals(3, hyperlink2.getFirstColumn());
+ assertEquals(5, hyperlink2.getLastRow());
+ assertEquals(3, hyperlink2.getLastColumn());
+
+ assertTrue(sheet.getHyperlinkList().contains(hyperlink1), "sheet contains hyperlink1");
+ assertTrue(sheet.getHyperlinkList().contains(hyperlink2), "sheet contains hyperlink2");
+
+ sheet.removeHyperlink(hyperlink1);
+ assertFalse(sheet.getHyperlinkList().contains(hyperlink1), "sheet no longer contains hyperlink1");
+ assertTrue(sheet.getHyperlinkList().contains(hyperlink2), "sheet still contains hyperlink2");
}
}