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 12:02:11 UTC
svn commit: r1899130 - /poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
Author: fanningpj
Date: Tue Mar 22 12:02:11 2022
New Revision: 1899130
URL: http://svn.apache.org/viewvc?rev=1899130&view=rev
Log:
[bug-65973] partial fix for removing hyperlinks that span multiple cells
Modified:
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.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=1899130&r1=1899129&r2=1899130&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 12:02:11 2022
@@ -3083,11 +3083,20 @@ public class XSSFSheet extends POIXMLDoc
// also remove any hyperlinks associated with this row
if (hyperlinks != null) {
- for (XSSFHyperlink link : new ArrayList<>(hyperlinks)) {
+ for (XSSFHyperlink link : getHyperlinkList()) {
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())) {
hyperlinks.remove(link);
+ } else if (range.getFirstRow() != range.getLastRow()) {
+ boolean toRemove = true;
+ for (int i = range.getFirstRow(); i <= range.getLastRow() && toRemove; i++) {
+ toRemove = rowsToRemoveSet.contains(i);
+ }
+ if (toRemove) {
+ hyperlinks.remove(link);
+ }
}
}
}
@@ -4264,13 +4273,13 @@ public class XSSFSheet extends POIXMLDoc
@Override
public CellRangeAddress getRepeatingRows() {
- return getRepeatingRowsOrColums(true);
+ return getRepeatingRowsOrColumns(true);
}
@Override
public CellRangeAddress getRepeatingColumns() {
- return getRepeatingRowsOrColums(false);
+ return getRepeatingRowsOrColumns(false);
}
@Override
@@ -4387,7 +4396,7 @@ public class XSSFSheet extends POIXMLDoc
}
- private CellRangeAddress getRepeatingRowsOrColums(boolean rows) {
+ private CellRangeAddress getRepeatingRowsOrColumns(boolean rows) {
int sheetIndex = getWorkbook().getSheetIndex(this);
XSSFName name = getWorkbook().getBuiltInName(
XSSFName.BUILTIN_PRINT_TITLE, sheetIndex);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org