From 585c3d0e6fe0619f72ee61926238cb4dec4cfde1 Mon Sep 17 00:00:00 2001 From: Yegor Kozlov Date: Tue, 12 Jul 2011 15:18:29 +0000 Subject: support for hyperlinks in SXSSF git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1145629 13f79535-47bb-0310-9956-ffa450edef68 --- src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFCell.java | 12 +++++++++++- src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java | 2 +- .../java/org/apache/poi/xssf/usermodel/XSSFHyperlink.java | 4 ++-- src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java | 8 +++++++- 4 files changed, 21 insertions(+), 5 deletions(-) (limited to 'src/ooxml/java') diff --git a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFCell.java b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFCell.java index b6423189ac..bd57fc3ded 100644 --- a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFCell.java +++ b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFCell.java @@ -26,7 +26,8 @@ import org.apache.poi.ss.formula.eval.ErrorEval; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.formula.FormulaParseException; import org.apache.poi.ss.util.CellRangeAddress; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.STCellType; +import org.apache.poi.ss.util.CellReference; +import org.apache.poi.xssf.usermodel.XSSFHyperlink; /** * Streaming version of XSSFRow implementing the "BigGridDemo" strategy. @@ -570,6 +571,15 @@ public class SXSSFCell implements Cell public void setHyperlink(Hyperlink link) { setProperty(Property.HYPERLINK,link); + + XSSFHyperlink xssfobj = (XSSFHyperlink)link; + // Assign to us + CellReference ref = new CellReference(getRowIndex(), getColumnIndex()); + xssfobj.getCTHyperlink().setRef( ref.formatAsString() ); + + // Add to the lists + ((SXSSFSheet)getSheet())._sh.addHyperlink(xssfobj); + } /** diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java index 42c70e8c83..1185b562a4 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java @@ -917,7 +917,7 @@ public final class XSSFCell implements Cell { link.setCellReference( new CellReference(_row.getRowNum(), _cellNum).formatAsString() ); // Add to the lists - getSheet().setCellHyperlink(link); + getSheet().addHyperlink(link); } /** diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFHyperlink.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFHyperlink.java index c472911e8e..21fd54b844 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFHyperlink.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFHyperlink.java @@ -88,9 +88,9 @@ public class XSSFHyperlink implements Hyperlink { } /** - * Returns the underlying hyperlink object + * @return the underlying CTHyperlink object */ - protected CTHyperlink getCTHyperlink() { + public CTHyperlink getCTHyperlink() { return _ctHyperlink; } 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 19ea45a3f1..24cd2ba245 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java @@ -2501,7 +2501,13 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { comment.setColumn(cellReference.getCol()); } - protected void setCellHyperlink(XSSFHyperlink hyperlink) { + /** + * Register a hyperlink in the collection of hyperlinks on this sheet + * + * @param hyperlink the link to add + */ + @Internal + public void addHyperlink(XSSFHyperlink hyperlink) { hyperlinks.add(hyperlink); } -- cgit v1.2.3