aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java11
-rw-r--r--src/java/org/apache/poi/ss/usermodel/Sheet.java8
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFSheet.java11
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java13
-rw-r--r--src/testcases/org/apache/poi/ss/usermodel/BaseTestSheet.java21
5 files changed, 63 insertions, 1 deletions
diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java
index 3ff7005ba4..e9e3cf6f75 100644
--- a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java
+++ b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java
@@ -2216,6 +2216,17 @@ public final class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet {
}
/**
+ * Get a Hyperlink in this sheet located in a cell specified by {code addr}
+ *
+ * @param addr The address of the cell containing the hyperlink
+ * @return hyperlink if there is a hyperlink anchored at {@code addr}; otherwise returns {@code null}
+ */
+ @Override
+ public HSSFHyperlink getHyperlink(CellAddress addr) {
+ return getHyperlink(addr.getRow(), addr.getColumn());
+ }
+
+ /**
* Get a list of Hyperlinks in this sheet
*
* @return Hyperlinks for the sheet
diff --git a/src/java/org/apache/poi/ss/usermodel/Sheet.java b/src/java/org/apache/poi/ss/usermodel/Sheet.java
index 74ad8690e2..3d449348ec 100644
--- a/src/java/org/apache/poi/ss/usermodel/Sheet.java
+++ b/src/java/org/apache/poi/ss/usermodel/Sheet.java
@@ -1159,6 +1159,14 @@ public interface Sheet extends Iterable<Row> {
public Hyperlink getHyperlink(int row, int column);
/**
+ * Get a Hyperlink in this sheet located in a cell specified by {code addr}
+ *
+ * @param addr The address of the cell containing the hyperlink
+ * @return hyperlink if there is a hyperlink anchored at {@code addr}; otherwise returns {@code null}
+ */
+ public Hyperlink getHyperlink(CellAddress addr);
+
+ /**
* Get a list of Hyperlinks in this sheet
*
* @return Hyperlinks for the sheet
diff --git a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFSheet.java b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFSheet.java
index 41e4e17f21..eeb321d924 100644
--- a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFSheet.java
+++ b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFSheet.java
@@ -1666,6 +1666,17 @@ public class SXSSFSheet implements Sheet
}
/**
+ * Get a Hyperlink in this sheet located in a cell specified by {code addr}
+ *
+ * @param addr The address of the cell containing the hyperlink
+ * @return hyperlink if there is a hyperlink anchored at {@code addr}; otherwise returns {@code null}
+ */
+ @Override
+ public XSSFHyperlink getHyperlink(CellAddress addr) {
+ return _sh.getHyperlink(addr);
+ }
+
+ /**
* Get a list of Hyperlinks in this sheet
*
* @return Hyperlinks for the sheet
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
index 44474b0b4c..771986b263 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
@@ -806,7 +806,18 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
*/
@Override
public XSSFHyperlink getHyperlink(int row, int column) {
- String ref = new CellReference(row, column).formatAsString();
+ return getHyperlink(new CellAddress(row, column));
+ }
+
+ /**
+ * Get a Hyperlink in this sheet located in a cell specified by {code addr}
+ *
+ * @param addr The address of the cell containing the hyperlink
+ * @return hyperlink if there is a hyperlink anchored at {@code addr}; otherwise returns {@code null}
+ */
+ @Override
+ public XSSFHyperlink getHyperlink(CellAddress addr) {
+ String ref = addr.formatAsString();
for(XSSFHyperlink hyperlink : hyperlinks) {
if(hyperlink.getCellRef().equals(ref)) {
return hyperlink;
diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheet.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheet.java
index b7b85cf730..65565f17bf 100644
--- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheet.java
+++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheet.java
@@ -1208,6 +1208,27 @@ public abstract class BaseTestSheet {
workbook.close();
wb.close();
}
+
+ @Test
+ public void getHyperlink() throws IOException {
+ Workbook workbook = _testDataProvider.createWorkbook();
+ Hyperlink hyperlink = workbook.getCreationHelper().createHyperlink(Hyperlink.LINK_URL);
+ hyperlink.setAddress("https://poi.apache.org/");
+
+ Sheet sheet = workbook.createSheet();
+ Cell cell = sheet.createRow(5).createCell(1);
+
+ assertEquals("list size before add", 0, sheet.getHyperlinkList().size());
+ cell.setHyperlink(hyperlink);
+ assertEquals("list size after add", 1, sheet.getHyperlinkList().size());
+
+ assertEquals("list", hyperlink, sheet.getHyperlinkList().get(0));
+ assertEquals("row, col", hyperlink, sheet.getHyperlink(5, 1));
+ assertEquals("addr", hyperlink, sheet.getHyperlink(new CellAddress("B4")));
+ assertEquals("no hyperlink at A1", null, sheet.getHyperlink(CellAddress.A1));
+
+ workbook.close();
+ }
@Test