ASF Bugzilla – Attachment 19650 Details for
Bug 41726
Signed cell offsets are not implemented for shared formulas
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch for the bug
patch.txt (text/plain), 6.82 KB, created by
Christian Eckerle
on 2007-02-28 05:17:24 UTC
(
hide
)
Description:
Patch for the bug
Filename:
MIME Type:
Creator:
Christian Eckerle
Created:
2007-02-28 05:17:24 UTC
Size:
6.82 KB
patch
obsolete
>Index: /Users/ce/Documents/workspace/POI/src/java/org/apache/poi/hssf/record/SharedFormulaRecord.java >=================================================================== >--- /Users/ce/Documents/workspace/POI/src/java/org/apache/poi/hssf/record/SharedFormulaRecord.java (revision 512703) >+++ /Users/ce/Documents/workspace/POI/src/java/org/apache/poi/hssf/record/SharedFormulaRecord.java (working copy) >@@ -205,8 +205,8 @@ > Ptg ptg = (Ptg) field_7_parsed_expr.get(k); > if (ptg instanceof RefNPtg) { > RefNPtg refNPtg = (RefNPtg)ptg; >- ptg = new ReferencePtg( (short)(formulaRow + refNPtg.getRow()), >- (byte)(formulaColumn + refNPtg.getColumn()), >+ ptg = new ReferencePtg( (short)(fixupRelativeRow(formulaRow,refNPtg.getRow(),refNPtg.isRowRelative())), >+ (byte)(fixupRelativeColumn(formulaColumn,refNPtg.getColumn(),refNPtg.isColRelative())), > refNPtg.isRowRelative(), > refNPtg.isColRelative()); > } else if (ptg instanceof RefNVPtg) { >@@ -211,8 +211,8 @@ > refNPtg.isColRelative()); > } else if (ptg instanceof RefNVPtg) { > RefNVPtg refNVPtg = (RefNVPtg)ptg; >- ptg = new RefVPtg( (short)(formulaRow + refNVPtg.getRow()), >- (byte)(formulaColumn + refNVPtg.getColumn()), >+ ptg = new RefVPtg( (short)(fixupRelativeRow(formulaRow,refNVPtg.getRow(),refNVPtg.isRowRelative())), >+ (byte)(fixupRelativeColumn(formulaColumn,refNVPtg.getColumn(),refNVPtg.isColRelative())), > refNVPtg.isRowRelative(), > refNVPtg.isColRelative()); > } else if (ptg instanceof RefNAPtg) { >@@ -217,8 +217,8 @@ > refNVPtg.isColRelative()); > } else if (ptg instanceof RefNAPtg) { > RefNAPtg refNAPtg = (RefNAPtg)ptg; >- ptg = new RefAPtg( (short)(formulaRow + refNAPtg.getRow()), >- (byte)(formulaColumn + refNAPtg.getColumn()), >+ ptg = new RefAPtg( (short)(fixupRelativeRow(formulaRow,refNAPtg.getRow(),refNAPtg.isRowRelative())), >+ (byte)(fixupRelativeColumn(formulaColumn,refNAPtg.getColumn(),refNAPtg.isColRelative())), > refNAPtg.isRowRelative(), > refNAPtg.isColRelative()); > } else if (ptg instanceof AreaNPtg) { >@@ -223,10 +223,10 @@ > refNAPtg.isColRelative()); > } else if (ptg instanceof AreaNPtg) { > AreaNPtg areaNPtg = (AreaNPtg)ptg; >- ptg = new AreaPtg((short)(formulaRow + areaNPtg.getFirstRow()), >- (short)(formulaRow + areaNPtg.getLastRow()), >- (short)(formulaColumn + areaNPtg.getFirstColumn()), >- (short)(formulaColumn + areaNPtg.getLastColumn()), >+ ptg = new AreaPtg((short)(fixupRelativeRow(formulaRow,areaNPtg.getFirstRow(),areaNPtg.isFirstRowRelative())), >+ (short)(fixupRelativeRow(formulaRow,areaNPtg.getLastRow(),areaNPtg.isLastRowRelative())), >+ (short)(fixupRelativeColumn(formulaColumn,areaNPtg.getFirstColumn(),areaNPtg.isFirstColRelative())), >+ (short)(fixupRelativeColumn(formulaColumn,areaNPtg.getLastColumn(),areaNPtg.isLastColRelative())), > areaNPtg.isFirstRowRelative(), > areaNPtg.isLastRowRelative(), > areaNPtg.isFirstColRelative(), >@@ -233,10 +233,10 @@ > areaNPtg.isLastColRelative()); > } else if (ptg instanceof AreaNVPtg) { > AreaNVPtg areaNVPtg = (AreaNVPtg)ptg; >- ptg = new AreaVPtg((short)(formulaRow + areaNVPtg.getFirstRow()), >- (short)(formulaRow + areaNVPtg.getLastRow()), >- (short)(formulaColumn + areaNVPtg.getFirstColumn()), >- (short)(formulaColumn + areaNVPtg.getLastColumn()), >+ ptg = new AreaVPtg((short)(fixupRelativeRow(formulaRow,areaNVPtg.getFirstRow(),areaNVPtg.isFirstRowRelative())), >+ (short)(fixupRelativeRow(formulaRow,areaNVPtg.getLastRow(),areaNVPtg.isLastRowRelative())), >+ (short)(fixupRelativeColumn(formulaColumn,areaNVPtg.getFirstColumn(),areaNVPtg.isFirstColRelative())), >+ (short)(fixupRelativeColumn(formulaColumn,areaNVPtg.getLastColumn(),areaNVPtg.isLastColRelative())), > areaNVPtg.isFirstRowRelative(), > areaNVPtg.isLastRowRelative(), > areaNVPtg.isFirstColRelative(), >@@ -243,10 +243,10 @@ > areaNVPtg.isLastColRelative()); > } else if (ptg instanceof AreaNAPtg) { > AreaNAPtg areaNAPtg = (AreaNAPtg)ptg; >- ptg = new AreaAPtg((short)(formulaRow + areaNAPtg.getFirstRow()), >- (short)(formulaRow + areaNAPtg.getLastRow()), >- (short)(formulaColumn + areaNAPtg.getFirstColumn()), >- (short)(formulaColumn + areaNAPtg.getLastColumn()), >+ ptg = new AreaAPtg((short)(fixupRelativeRow(formulaRow,areaNAPtg.getFirstRow(),areaNAPtg.isFirstRowRelative())), >+ (short)(fixupRelativeRow(formulaRow,areaNAPtg.getLastRow(),areaNAPtg.isLastRowRelative())), >+ (short)(fixupRelativeColumn(formulaColumn,areaNAPtg.getFirstColumn(),areaNAPtg.isFirstColRelative())), >+ (short)(fixupRelativeColumn(formulaColumn,areaNAPtg.getLastColumn(),areaNAPtg.isLastColRelative())), > areaNAPtg.isFirstRowRelative(), > areaNAPtg.isLastRowRelative(), > areaNAPtg.isFirstColRelative(), >@@ -261,6 +261,22 @@ > throw new RuntimeException("Shared Formula Conversion: Coding Error"); > } > } >+ >+ private short fixupRelativeColumn(int currentcolumn, short column, boolean relative) { >+ if(relative) { >+ if((column&128)!=0) column=(short)(column-256); >+ column+=currentcolumn; >+ } >+ return column; >+ } >+ >+ private short fixupRelativeRow(int currentrow, short row, boolean relative) { >+ if(relative) { >+ if((row&32768)!=0) row=(short)(row-65536); >+ row+=currentrow; >+ } >+ return row; >+ } > > /** > * Mirroring formula records so it is registered in the ValueRecordsAggregate
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 41726
:
19650
|
21400
|
21401