Fixed a problem with save-and-load of conditional formattings (CFHeader12 wasn't added to conditional formattings, rgb value wasn't saved in extended color)

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1706739 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Andreas Beeker 2015-10-05 00:26:19 +00:00
parent 98e93217fe
commit d9c0fb9ce5
3 changed files with 14 additions and 6 deletions

View File

@ -22,6 +22,7 @@ import java.util.Iterator;
import java.util.List;
import org.apache.poi.hssf.record.BOFRecord;
import org.apache.poi.hssf.record.CFHeader12Record;
import org.apache.poi.hssf.record.CFHeaderRecord;
import org.apache.poi.hssf.record.CalcCountRecord;
import org.apache.poi.hssf.record.CalcModeRecord;
@ -190,7 +191,7 @@ public final class InternalSheet {
while (rs.hasNext()) {
int recSid = rs.peekNextSid();
if ( recSid == CFHeaderRecord.sid ) {
if ( recSid == CFHeaderRecord.sid || recSid == CFHeader12Record.sid ) {
condFormatting = new ConditionalFormattingTable(rs);
records.add(condFormatting);
continue;

View File

@ -62,13 +62,17 @@ public abstract class CFHeaderBase extends StandardRecord implements Cloneable {
public boolean getNeedRecalculation() {
// Held on the 1st bit
return field_2_need_recalculation_and_id % 2 == 1;
return (field_2_need_recalculation_and_id & 1) == 1;
}
public void setNeedRecalculation(boolean b) {
// held on the first bit
if (b == getNeedRecalculation()) return;
if (b) field_2_need_recalculation_and_id++;
else field_2_need_recalculation_and_id--;
if (b == getNeedRecalculation()) {
return;
} else if (b) {
field_2_need_recalculation_and_id++;
} else {
field_2_need_recalculation_and_id--;
}
}
public int getID() {
@ -79,7 +83,9 @@ public abstract class CFHeaderBase extends StandardRecord implements Cloneable {
// Remaining 15 bits of field 2
boolean needsRecalc = getNeedRecalculation();
field_2_need_recalculation_and_id = (id<<1);
if (needsRecalc) field_2_need_recalculation_and_id++;
if (needsRecalc) {
field_2_need_recalculation_and_id++;
}
}
public CellRangeAddress getEnclosingCellRange() {

View File

@ -97,6 +97,7 @@ public class HSSFExtendedColor extends ExtendedColor {
rgb[3] = a;
color.setRGBA(rgb);
}
color.setType(TYPE_RGB);
}
public double getTint() {