Преглед на файлове

#58130 more progress towards supporting other CF types

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1691472 13f79535-47bb-0310-9956-ffa450edef68
tags/REL_3_13_FINAL
Nick Burch преди 9 години
родител
ревизия
7562f031c0

+ 18
- 0
src/java/org/apache/poi/hssf/record/CFRule12Record.java Целия файл

@@ -20,11 +20,13 @@ package org.apache.poi.hssf.record;
import java.util.Arrays;

import org.apache.poi.hssf.record.cf.IconMultiStateFormatting;
import org.apache.poi.hssf.record.cf.Threshold;
import org.apache.poi.hssf.record.common.FtrHeader;
import org.apache.poi.hssf.record.common.FutureRecord;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.ss.formula.Formula;
import org.apache.poi.ss.formula.ptg.Ptg;
import org.apache.poi.ss.usermodel.IconMultiStateFormatting.IconSet;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.util.HexDump;
import org.apache.poi.util.LittleEndianOutput;
@@ -116,6 +118,22 @@ public final class CFRule12Record extends CFRuleBase implements FutureRecord {
return new CFRule12Record(CONDITION_TYPE_CELL_VALUE_IS, comparisonOperation,
formula1, formula2, formula3);
}
/**
* Creates a new Icon Set / Multi-State formatting
*/
public static CFRule12Record create(HSSFSheet sheet, IconSet iconSet) {
Threshold[] ts = new Threshold[iconSet.num];
for (int i=0; i<ts.length; i++) {
ts[i] = new Threshold();
}
CFRule12Record r = new CFRule12Record(CONDITION_TYPE_COLOR_SCALE,
ComparisonOperator.NO_COMPARISON);
r.getMultiStateFormatting().setIconSet(iconSet);
r.getMultiStateFormatting().setThresholds(ts);
return r;
}
// TODO Static creators for the other record types

public CFRule12Record(RecordInputStream in) {
futureHeader = new FtrHeader(in);

+ 11
- 7
src/java/org/apache/poi/hssf/usermodel/HSSFSheetConditionalFormatting.java Целия файл

@@ -17,6 +17,7 @@

package org.apache.poi.hssf.usermodel;

import org.apache.poi.hssf.record.CFRule12Record;
import org.apache.poi.hssf.record.CFRuleBase;
import org.apache.poi.hssf.record.CFRuleRecord;
import org.apache.poi.hssf.record.aggregates.CFRecordsAggregate;
@@ -24,6 +25,7 @@ import org.apache.poi.hssf.record.aggregates.ConditionalFormattingTable;
import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.ss.usermodel.ConditionalFormatting;
import org.apache.poi.ss.usermodel.ConditionalFormattingRule;
import org.apache.poi.ss.usermodel.IconMultiStateFormatting.IconSet;
import org.apache.poi.ss.usermodel.SheetConditionalFormatting;
import org.apache.poi.ss.util.CellRangeAddress;

@@ -90,21 +92,23 @@ public final class HSSFSheetConditionalFormatting implements SheetConditionalFor
return new HSSFConditionalFormattingRule(_sheet, rr);
}
// TODO Support types beyond CELL_VALUE_IS and FORMULA
/**
* A factory method allowing the creation of conditional formatting
* rules using an Icon Set / Multi-State formatting/
* rules using an Icon Set / Multi-State formatting.
* The thresholds for it will be created, but will be empty
* and require configuring with
* {@link HSSFConditionalFormattingRule#getMultiStateFormatting()}
* then
* {@link HSSFIconMultiStateFormatting#getThresholds()}
*/
// TODO Implement
/*
public HSSFConditionalFormattingRule createConditionalFormattingRule(
IconSet iconSet) { // TODO Multi-State data for it
IconSet iconSet) {
CFRule12Record rr = CFRule12Record.create(_sheet, iconSet);
return new HSSFConditionalFormattingRule(_sheet, rr);
}
*/

// TODO Support types beyond CELL_VALUE_IS and FORMULA and ICONs
/**
* Adds a copy of HSSFConditionalFormatting object to the sheet
* <p>This method could be used to copy HSSFConditionalFormatting object

+ 6
- 1
src/java/org/apache/poi/ss/usermodel/ConditionalFormattingRule.java Целия файл

@@ -74,10 +74,15 @@ public interface ConditionalFormattingRule {
PatternFormatting createPatternFormatting();
/**
* @return - pattern formatting object if defined, <code>null</code> otherwise
* @return - pattern formatting object if defined, <code>null</code> otherwise
*/
PatternFormatting getPatternFormatting();
/**
* @return - icon / multi-state formatting object if defined, <code>null</code> otherwise
*/
IconMultiStateFormatting getMultiStateFormatting();
/**
* Type of conditional formatting rule.
* <p>

+ 13
- 0
src/java/org/apache/poi/ss/usermodel/SheetConditionalFormatting.java Целия файл

@@ -19,6 +19,7 @@
package org.apache.poi.ss.usermodel;
import org.apache.poi.ss.usermodel.IconMultiStateFormatting.IconSet;
import org.apache.poi.ss.util.CellRangeAddress;
/**
@@ -135,6 +136,18 @@ public interface SheetConditionalFormatting {
*/
ConditionalFormattingRule createConditionalFormattingRule(String formula);
/**
* Create an Icon Set / Multi-State conditional formatting rule.
* <p>The thresholds for it will be created, but will be empty
* and require configuring with
* {@link ConditionalFormattingRule#getMultiStateFormatting()}
* then
* {@link IconMultiStateFormatting#getThresholds()}
*/
ConditionalFormattingRule createConditionalFormattingRule(IconSet iconSet);
// TODO Support types beyond CELL_VALUE_IS and FORMULA and ICONs
/**
* Gets Conditional Formatting object at a particular index
*

+ 8
- 0
src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFConditionalFormattingRule.java Целия файл

@@ -178,6 +178,14 @@ public class XSSFConditionalFormattingRule implements ConditionalFormattingRule
return new XSSFPatternFormatting(dxf.getFill());
}
public IconMultiStateFormatting createMultiStateFormatting() {
throw new IllegalArgumentException("Not implemented yet"); // TODO
}
public IconMultiStateFormatting getMultiStateFormatting() {
throw new IllegalArgumentException("Not implemented yet"); // TODO
}
/**
* Type of conditional formatting rule.

+ 29
- 0
src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheetConditionalFormatting.java Целия файл

@@ -27,10 +27,13 @@ import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.ss.usermodel.ComparisonOperator;
import org.apache.poi.ss.usermodel.ConditionalFormatting;
import org.apache.poi.ss.usermodel.ConditionalFormattingRule;
import org.apache.poi.ss.usermodel.IconMultiStateFormatting.IconSet;
import org.apache.poi.ss.usermodel.SheetConditionalFormatting;
import org.apache.poi.ss.util.CellRangeAddress;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCfRule;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTColorScale;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTConditionalFormatting;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTIconSet;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STCfType;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STConditionalFormattingOperator;
@@ -118,6 +121,32 @@ public class XSSFSheetConditionalFormatting implements SheetConditionalFormattin
return rule;
}
/**
* A factory method allowing the creation of conditional formatting
* rules using an Icon Set / Multi-State formatting.
* The thresholds for it will be created, but will be empty
* and require configuring with
* {@link XSSFConditionalFormattingRule#getMultiStateFormatting()}
* then
* {@link XSSFIconMultiStateFormatting#getThresholds()}
*/
public XSSFConditionalFormattingRule createConditionalFormattingRule(IconSet iconSet) {
XSSFConditionalFormattingRule rule = new XSSFConditionalFormattingRule(_sheet);
CTCfRule cfRule = rule.getCTCfRule();
cfRule.setType(STCfType.COLOR_SCALE);
CTIconSet icons = cfRule.addNewIconSet();
if (iconSet.name != null) {
// TODO Map to the enum
// icons.setIconSet();
}
// TODO Add cfvos
return rule;
}
// TODO Support types beyond CELL_VALUE_IS and FORMULA and ICONs
@SuppressWarnings("deprecation")
public int addConditionalFormatting(CellRangeAddress[] regions, ConditionalFormattingRule[] cfRules) {
if (regions == null) {

Loading…
Отказ
Запис