diff --git a/src/java/org/apache/poi/hssf/record/aggregates/ConditionalFormattingTable.java b/src/java/org/apache/poi/hssf/record/aggregates/ConditionalFormattingTable.java
index 33a2f7b29..e5ea515e8 100644
--- a/src/java/org/apache/poi/hssf/record/aggregates/ConditionalFormattingTable.java
+++ b/src/java/org/apache/poi/hssf/record/aggregates/ConditionalFormattingTable.java
@@ -21,6 +21,7 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hssf.model.RecordStream;
+import org.apache.poi.hssf.record.CFHeader12Record;
import org.apache.poi.hssf.record.CFHeaderRecord;
import org.apache.poi.ss.formula.FormulaShifter;
@@ -28,11 +29,8 @@ import org.apache.poi.ss.formula.FormulaShifter;
* Holds all the conditional formatting for a workbook sheet.
*
* See OOO exelfileformat.pdf sec 4.12 'Conditional Formatting Table'
- *
- * @author Josh Micich
*/
public final class ConditionalFormattingTable extends RecordAggregate {
-
private final List _cfHeaders;
/**
@@ -45,7 +43,8 @@ public final class ConditionalFormattingTable extends RecordAggregate {
public ConditionalFormattingTable(RecordStream rs) {
List temp = new ArrayList();
- while (rs.peekNextClass() == CFHeaderRecord.class) {
+ while (rs.peekNextClass() == CFHeaderRecord.class ||
+ rs.peekNextClass() == CFHeader12Record.class) {
temp.add(CFRecordsAggregate.createCFAggregate(rs));
}
_cfHeaders = temp;
diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestConditionalFormatting.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestConditionalFormatting.java
index 1fb7ada60..cb7f19aa8 100644
--- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestConditionalFormatting.java
+++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestConditionalFormatting.java
@@ -20,6 +20,8 @@
package org.apache.poi.ss.usermodel;
import junit.framework.TestCase;
+
+import org.apache.poi.hssf.usermodel.HSSFConditionalFormatting;
import org.apache.poi.ss.ITestDataProvider;
import org.apache.poi.ss.util.CellRangeAddress;
@@ -528,6 +530,7 @@ public abstract class BaseTestConditionalFormatting extends TestCase {
Workbook wb = _testDataProvider.openSampleWorkbook(filename);
Sheet s = wb.getSheet("CF");
ConditionalFormatting cf = null;
+ ConditionalFormattingRule cr = null;
// Sanity check data
assertEquals("Values", s.getRow(0).getCell(0).toString());
@@ -535,16 +538,38 @@ public abstract class BaseTestConditionalFormatting extends TestCase {
// Check we found all the conditional formattings rules we should have
SheetConditionalFormatting sheetCF = s.getSheetConditionalFormatting();
- assertEquals(1, sheetCF.getNumConditionalFormattings()); // TODO Should be more!
+ int numCF = 3;
+ int numCF12 = 15;
+ int numCFEX = 0; // TODO This should be 1, but we don't support CFEX formattings yet
+ assertEquals(numCF+numCF12+numCFEX, sheetCF.getNumConditionalFormattings());
- cf = sheetCF.getConditionalFormattingAt(0);
- //System.out.println(cf);
+ int fCF = 0, fCF12 = 0, fCFEX = 0;
+ for (int i=0; i