From f839090fe6ea48c03c79983db88a8788aa8fb2e5 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sat, 16 Sep 2017 08:20:17 +0000 Subject: [PATCH] At least print out correct offset information for PtrRefN if it has offset values set git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1808501 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/ss/formula/ptg/RefNPtg.java | 20 +++++++++++++++++++ .../apache/poi/ss/formula/ptg/RefPtgBase.java | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/java/org/apache/poi/ss/formula/ptg/RefNPtg.java b/src/java/org/apache/poi/ss/formula/ptg/RefNPtg.java index 715836f8d..90d43ca94 100644 --- a/src/java/org/apache/poi/ss/formula/ptg/RefNPtg.java +++ b/src/java/org/apache/poi/ss/formula/ptg/RefNPtg.java @@ -17,6 +17,7 @@ package org.apache.poi.ss.formula.ptg; +import org.apache.poi.ss.util.CellReference; import org.apache.poi.util.LittleEndianInput; /** @@ -33,4 +34,23 @@ public final class RefNPtg extends Ref2DPtgBase { protected byte getSid() { return sid; } + + protected final String formatReferenceAsString() { + StringBuilder builder = new StringBuilder(); + + // The bits in RefNPtg indicate offset, not relative/absolute values! + if(isRowRelative()) { + builder.append("RowOffset: ").append(getRow()).append(" "); + } else { + builder.append(getRow()+1); + } + + if(isColRelative()) { + builder.append(" ColOffset: ").append(getColumn()); + } else { + builder.append(CellReference.convertNumToColString(getColumn())); + } + + return builder.toString(); + } } diff --git a/src/java/org/apache/poi/ss/formula/ptg/RefPtgBase.java b/src/java/org/apache/poi/ss/formula/ptg/RefPtgBase.java index 5ff9a7a3c..6d63ed5a4 100644 --- a/src/java/org/apache/poi/ss/formula/ptg/RefPtgBase.java +++ b/src/java/org/apache/poi/ss/formula/ptg/RefPtgBase.java @@ -105,7 +105,7 @@ public abstract class RefPtgBase extends OperandPtg { return column.getValue(field_2_col); } - protected final String formatReferenceAsString() { + protected String formatReferenceAsString() { // Only make cell references as needed. Memory is an issue CellReference cr = new CellReference(getRow(), getColumn(), !isRowRelative(), !isColRelative()); return cr.formatAsString();