// the relation to see how
if (_externalRel == null) {
if (ctHyperlink.getId() != null) {
- throw new IllegalStateException("The hyperlink for cell " + ctHyperlink.getRef() + " references relation " + ctHyperlink.getId() + ", but that didn't exist!");
+ throw new IllegalStateException("The hyperlink for cell " + ctHyperlink.getRef() +
+ " references relation " + ctHyperlink.getId() + ", but that didn't exist!");
+ }
+ // hyperlink is internal and is not related to other parts
+ _type = Hyperlink.LINK_DOCUMENT;
+ } else {
+ URI target = _externalRel.getTargetURI();
+ _location = target.toString();
+
+ // Try to figure out the type
+ if (_location.startsWith("http://") || _location.startsWith("https://")
+ || _location.startsWith("ftp://")) {
+ _type = Hyperlink.LINK_URL;
+ } else if (_location.startsWith("mailto:")) {
+ _type = Hyperlink.LINK_EMAIL;
+ } else {
+ _type = Hyperlink.LINK_FILE;
}
- throw new IllegalStateException("A sheet hyperlink must either have a location, or a relationship. Found:\n" + ctHyperlink);
}
- URI target = _externalRel.getTargetURI();
- _location = target.toString();
- // Try to figure out the type
- if (_location.startsWith("http://") || _location.startsWith("https://")
- || _location.startsWith("ftp://")) {
- _type = Hyperlink.LINK_URL;
- } else if (_location.startsWith("mailto:")) {
- _type = Hyperlink.LINK_EMAIL;
- } else {
- _type = Hyperlink.LINK_FILE;
- }
}
}
public void setLastRow(int row) {
setFirstRow(row);
}
+
+ /**
+ * @return additional text to help the user understand more about the hyperlink
+ */
+ public String getTooltip() {
+ return _ctHyperlink.getTooltip();
+ }
+
+ /**
+ * @param text additional text to help the user understand more about the hyperlink
+ */
+ public void setTooltip(String text) {
+ _ctHyperlink.setTooltip(text);
+ }
}
assertEquals("mailto:dev@poi.apache.org?subject=XSSF%20Hyperlinks",
sheet.getRow(16).getCell(2).getHyperlink().getAddress());
}
+
+ public void test52716() {
+ XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("52716.xlsx");
+ XSSFSheet sh1 = wb1.getSheetAt(0);
+
+ XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1);
+ XSSFSheet sh2 = wb2.getSheetAt(0);
+
+ assertEquals(sh1.getNumberOfComments(), sh2.getNumberOfComments());
+ XSSFHyperlink l1 = sh1.getHyperlink(0, 1);
+ assertEquals(XSSFHyperlink.LINK_DOCUMENT, l1.getType());
+ assertEquals("B1", l1.getCellRef());
+ assertEquals("Sort on Titel", l1.getTooltip());
+
+ XSSFHyperlink l2 = sh2.getHyperlink(0, 1);
+ assertEquals(l1.getTooltip(), l2.getTooltip());
+ assertEquals(XSSFHyperlink.LINK_DOCUMENT, l2.getType());
+ assertEquals("B1", l2.getCellRef());
+ }
+
}