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;
* Holds all the conditional formatting for a workbook sheet.<p/>
*
* See OOO exelfileformat.pdf sec 4.12 'Conditional Formatting Table'
- *
- * @author Josh Micich
*/
public final class ConditionalFormattingTable extends RecordAggregate {
-
private final List<CFRecordsAggregate> _cfHeaders;
/**
public ConditionalFormattingTable(RecordStream rs) {
List<CFRecordsAggregate> temp = new ArrayList<CFRecordsAggregate>();
- while (rs.peekNextClass() == CFHeaderRecord.class) {
+ while (rs.peekNextClass() == CFHeaderRecord.class ||
+ rs.peekNextClass() == CFHeader12Record.class) {
temp.add(CFRecordsAggregate.createCFAggregate(rs));
}
_cfHeaders = temp;
package org.apache.poi.ss.usermodel;\r
\r
import junit.framework.TestCase;\r
+\r
+import org.apache.poi.hssf.usermodel.HSSFConditionalFormatting;\r
import org.apache.poi.ss.ITestDataProvider;\r
import org.apache.poi.ss.util.CellRangeAddress;\r
\r
Workbook wb = _testDataProvider.openSampleWorkbook(filename);\r
Sheet s = wb.getSheet("CF");\r
ConditionalFormatting cf = null;\r
+ ConditionalFormattingRule cr = null;\r
\r
// Sanity check data\r
assertEquals("Values", s.getRow(0).getCell(0).toString());\r
\r
// Check we found all the conditional formattings rules we should have\r
SheetConditionalFormatting sheetCF = s.getSheetConditionalFormatting();\r
- assertEquals(1, sheetCF.getNumConditionalFormattings()); // TODO Should be more!\r
+ int numCF = 3;\r
+ int numCF12 = 15;\r
+ int numCFEX = 0; // TODO This should be 1, but we don't support CFEX formattings yet\r
+ assertEquals(numCF+numCF12+numCFEX, sheetCF.getNumConditionalFormattings());\r
\r
- cf = sheetCF.getConditionalFormattingAt(0);\r
- //System.out.println(cf);\r
+ int fCF = 0, fCF12 = 0, fCFEX = 0;\r
+ for (int i=0; i<sheetCF.getNumConditionalFormattings(); i++) {\r
+ cf = sheetCF.getConditionalFormattingAt(i);\r
+ if (cf instanceof HSSFConditionalFormatting) {\r
+ String str = cf.toString();\r
+ if (str.contains("[CF]")) fCF++;\r
+ if (str.contains("[CF12]")) fCF12++;\r
+ if (str.contains("[CFEX]")) fCFEX++;\r
+ } else {\r
+ fail("TODO!"); \r
+ }\r
+ }\r
+ assertEquals(numCF, fCF);\r
+ assertEquals(numCF12, fCF12);\r
+ assertEquals(numCFEX, fCFEX);\r
\r
\r
// Check the rules / values in detail\r
\r
// Highlight Positive values - Column C\r
- // TODO\r
+ cf = sheetCF.getConditionalFormattingAt(0);\r
+ assertEquals(1, cf.getFormattingRanges().length);\r
+ assertEquals("C2:C17", cf.getFormattingRanges()[0].formatAsString());\r
+ \r
+ assertEquals(1, cf.getNumberOfRules());\r
+ cr = cf.getRule(0);\r
+ // TODO Check the rest of this\r
\r
// Highlight 10-30 - Column D\r
// TODO\r