first commit
This commit is contained in:
91
hrmsEjb/jxl/read/biff/FormulaRecord.java
Normal file
91
hrmsEjb/jxl/read/biff/FormulaRecord.java
Normal file
@@ -0,0 +1,91 @@
|
||||
package jxl.read.biff;
|
||||
|
||||
import common.Assert;
|
||||
import common.Logger;
|
||||
import jxl.CellType;
|
||||
import jxl.WorkbookSettings;
|
||||
import jxl.biff.DoubleHelper;
|
||||
import jxl.biff.FormattingRecords;
|
||||
import jxl.biff.IntegerHelper;
|
||||
import jxl.biff.WorkbookMethods;
|
||||
import jxl.biff.formula.ExternalSheet;
|
||||
|
||||
class FormulaRecord extends CellValue {
|
||||
private static Logger logger = Logger.getLogger(FormulaRecord.class);
|
||||
|
||||
private CellValue formula;
|
||||
|
||||
private boolean shared;
|
||||
|
||||
private static class IgnoreSharedFormula {
|
||||
private IgnoreSharedFormula() {}
|
||||
}
|
||||
|
||||
public static final IgnoreSharedFormula ignoreSharedFormula = new IgnoreSharedFormula();
|
||||
|
||||
public FormulaRecord(Record t, File excelFile, FormattingRecords fr, ExternalSheet es, WorkbookMethods nt, SheetImpl si, WorkbookSettings ws) {
|
||||
super(t, fr, si);
|
||||
byte[] data = getRecord().getData();
|
||||
this.shared = false;
|
||||
int grbit = IntegerHelper.getInt(data[14], data[15]);
|
||||
if ((grbit & 0x8) != 0) {
|
||||
this.shared = true;
|
||||
if (data[6] == 0 && data[12] == -1 && data[13] == -1) {
|
||||
this.formula = new SharedStringFormulaRecord(t, excelFile, fr, es, nt, si, ws);
|
||||
} else if (data[6] == 2 && data[12] == -1 && data[13] == -1) {
|
||||
int errorCode = data[8];
|
||||
this.formula = new SharedErrorFormulaRecord(t, excelFile, errorCode, fr, es, nt, si);
|
||||
} else {
|
||||
double value = DoubleHelper.getIEEEDouble(data, 6);
|
||||
SharedNumberFormulaRecord snfr = new SharedNumberFormulaRecord(t, excelFile, value, fr, es, nt, si);
|
||||
snfr.setNumberFormat(fr.getNumberFormat(getXFIndex()));
|
||||
this.formula = snfr;
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (data[6] == 0 && data[12] == -1 && data[13] == -1) {
|
||||
this.formula = new StringFormulaRecord(t, excelFile, fr, es, nt, si, ws);
|
||||
} else if (data[6] == 1 && data[12] == -1 && data[13] == -1) {
|
||||
this.formula = new BooleanFormulaRecord(t, fr, es, nt, si);
|
||||
} else if (data[6] == 2 && data[12] == -1 && data[13] == -1) {
|
||||
this.formula = new ErrorFormulaRecord(t, fr, es, nt, si);
|
||||
} else if (data[6] == 3 && data[12] == -1 && data[13] == -1) {
|
||||
this.formula = new StringFormulaRecord(t, fr, es, nt, si);
|
||||
} else {
|
||||
this.formula = new NumberFormulaRecord(t, fr, es, nt, si);
|
||||
}
|
||||
}
|
||||
|
||||
public FormulaRecord(Record t, File excelFile, FormattingRecords fr, ExternalSheet es, WorkbookMethods nt, IgnoreSharedFormula i, SheetImpl si, WorkbookSettings ws) {
|
||||
super(t, fr, si);
|
||||
byte[] data = getRecord().getData();
|
||||
this.shared = false;
|
||||
if (data[6] == 0 && data[12] == -1 && data[13] == -1) {
|
||||
this.formula = new StringFormulaRecord(t, excelFile, fr, es, nt, si, ws);
|
||||
} else if (data[6] == 1 && data[12] == -1 && data[13] == -1) {
|
||||
this.formula = new BooleanFormulaRecord(t, fr, es, nt, si);
|
||||
} else if (data[6] == 2 && data[12] == -1 && data[13] == -1) {
|
||||
this.formula = new ErrorFormulaRecord(t, fr, es, nt, si);
|
||||
} else {
|
||||
this.formula = new NumberFormulaRecord(t, fr, es, nt, si);
|
||||
}
|
||||
}
|
||||
|
||||
public String getContents() {
|
||||
Assert.verify(false);
|
||||
return "";
|
||||
}
|
||||
|
||||
public CellType getType() {
|
||||
Assert.verify(false);
|
||||
return CellType.EMPTY;
|
||||
}
|
||||
|
||||
final CellValue getFormula() {
|
||||
return this.formula;
|
||||
}
|
||||
|
||||
final boolean isShared() {
|
||||
return this.shared;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user