Author: fanningpj
Date: Tue Aug 16 13:12:45 2022
New Revision: 1903458

URL: http://svn.apache.org/viewvc?rev=1903458&view=rev
Log:
[bug-66215] add test case (that shows we have issues and need fixes)

Modified:
    
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/ss/tests/formula/TestStructuredReferences.java

Modified: 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/ss/tests/formula/TestStructuredReferences.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/ss/tests/formula/TestStructuredReferences.java?rev=1903458&r1=1903457&r2=1903458&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/ss/tests/formula/TestStructuredReferences.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/ss/tests/formula/TestStructuredReferences.java
 Tue Aug 16 13:12:45 2022
@@ -33,6 +33,7 @@ import org.apache.poi.ss.util.CellRefere
 import org.apache.poi.xssf.XSSFTestDataSamples;
 import org.apache.poi.xssf.usermodel.*;
 import org.junit.jupiter.api.Test;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTableColumn;
 
 /**
  * Tests Excel Table expressions (structured references)
@@ -177,6 +178,29 @@ class TestStructuredReferences {
             XSSFRow row7 = sheet.getRow(7);
             //the next formula is completely wrong (should be the same as the 
value in the row4 assertion above)
             assertEquals("SUBTOTAL(109,Tabelle1[Percentage])", 
row7.getCell(5).getCellFormula());
+
+            //correct all sheet table-reference-formulas which probably got 
damaged after shift rows
+            for (CTTableColumn tableCol : 
table.getCTTable().getTableColumns().getTableColumnList()) {
+                if (tableCol.getCalculatedColumnFormula() != null) {
+                    int id = (int) tableCol.getId();
+                    String formula = 
tableCol.getCalculatedColumnFormula().getStringValue();
+                    int rFirst = table.getStartCellReference().getRow() + 
table.getHeaderRowCount();
+                    int rLast = table.getEndCellReference().getRow() - 
table.getTotalsRowCount();
+                    int c = table.getStartCellReference().getCol() + id - 1;
+                    sheet.getWorkbook().setCellFormulaValidation(false);
+                    for (int r = rFirst; r <= rLast; r++) {
+                        XSSFRow row = sheet.getRow(r);
+                        if (row == null) row = sheet.createRow(r);
+                        XSSFCell cell = row.getCell(c, 
Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);
+                        cell.setCellFormula(formula);
+                    }
+                }
+            }
+
+            //is it right that this reverts back to Tabelle1 when it was 
Tabelle2 for the 'correct all sheet table-reference-formulas' loop?
+            assertEquals("Tabelle1[[#This 
Row],[Total]]/Tabelle1[[#Totals],[Total]]", row4.getCell(5).getCellFormula());
+            //the next formula is still completely wrong (should be the same 
as the value in the row4 assertion above)
+            assertEquals("SUBTOTAL(109,Tabelle1[Percentage])", 
row7.getCell(5).getCellFormula());
         }
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to