first commit
This commit is contained in:
94
hrmsEjb/jxl/read/biff/SharedFormulaRecord.java
Normal file
94
hrmsEjb/jxl/read/biff/SharedFormulaRecord.java
Normal file
@@ -0,0 +1,94 @@
|
||||
package jxl.read.biff;
|
||||
|
||||
import common.Logger;
|
||||
import java.text.NumberFormat;
|
||||
import java.util.ArrayList;
|
||||
import jxl.Cell;
|
||||
import jxl.CellType;
|
||||
import jxl.biff.FormattingRecords;
|
||||
import jxl.biff.IntegerHelper;
|
||||
import jxl.biff.WorkbookMethods;
|
||||
import jxl.biff.formula.ExternalSheet;
|
||||
|
||||
class SharedFormulaRecord {
|
||||
private static Logger logger = Logger.getLogger(SharedFormulaRecord.class);
|
||||
|
||||
private int firstRow;
|
||||
|
||||
private int lastRow;
|
||||
|
||||
private int firstCol;
|
||||
|
||||
private int lastCol;
|
||||
|
||||
private BaseSharedFormulaRecord templateFormula;
|
||||
|
||||
private ArrayList formulas;
|
||||
|
||||
private byte[] tokens;
|
||||
|
||||
private ExternalSheet externalSheet;
|
||||
|
||||
private SheetImpl sheet;
|
||||
|
||||
public SharedFormulaRecord(Record t, BaseSharedFormulaRecord fr, ExternalSheet es, WorkbookMethods nt, SheetImpl si) {
|
||||
this.sheet = si;
|
||||
byte[] data = t.getData();
|
||||
this.firstRow = IntegerHelper.getInt(data[0], data[1]);
|
||||
this.lastRow = IntegerHelper.getInt(data[2], data[3]);
|
||||
this.firstCol = data[4] & 0xFF;
|
||||
this.lastCol = data[5] & 0xFF;
|
||||
this.formulas = new ArrayList();
|
||||
this.templateFormula = fr;
|
||||
this.tokens = new byte[data.length - 10];
|
||||
System.arraycopy(data, 10, this.tokens, 0, this.tokens.length);
|
||||
}
|
||||
|
||||
public boolean add(BaseSharedFormulaRecord fr) {
|
||||
boolean added = false;
|
||||
int r = fr.getRow();
|
||||
if (r >= this.firstRow && r <= this.lastRow) {
|
||||
int c = fr.getColumn();
|
||||
if (c >= this.firstCol && c <= this.lastCol) {
|
||||
this.formulas.add(fr);
|
||||
added = true;
|
||||
}
|
||||
}
|
||||
return added;
|
||||
}
|
||||
|
||||
Cell[] getFormulas(FormattingRecords fr, boolean nf) {
|
||||
Cell[] sfs = new Cell[this.formulas.size() + 1];
|
||||
if (this.templateFormula == null) {
|
||||
logger.warn("Shared formula template formula is null");
|
||||
return new Cell[0];
|
||||
}
|
||||
this.templateFormula.setTokens(this.tokens);
|
||||
NumberFormat templateNumberFormat = null;
|
||||
if (this.templateFormula.getType() == CellType.NUMBER_FORMULA) {
|
||||
SharedNumberFormulaRecord snfr = (SharedNumberFormulaRecord)this.templateFormula;
|
||||
templateNumberFormat = snfr.getNumberFormat();
|
||||
if (fr.isDate(this.templateFormula.getXFIndex())) {
|
||||
this.templateFormula = new SharedDateFormulaRecord(snfr, fr, nf, this.sheet, snfr.getFilePos());
|
||||
this.templateFormula.setTokens(snfr.getTokens());
|
||||
}
|
||||
}
|
||||
sfs[0] = this.templateFormula;
|
||||
BaseSharedFormulaRecord f = null;
|
||||
for (int i = 0; i < this.formulas.size(); i++) {
|
||||
f = this.formulas.get(i);
|
||||
if (f.getType() == CellType.NUMBER_FORMULA) {
|
||||
SharedNumberFormulaRecord snfr = (SharedNumberFormulaRecord)f;
|
||||
if (fr.isDate(f.getXFIndex()))
|
||||
f = new SharedDateFormulaRecord(snfr, fr, nf, this.sheet, snfr.getFilePos());
|
||||
}
|
||||
f.setTokens(this.tokens);
|
||||
sfs[i + 1] = f;
|
||||
}
|
||||
return sfs;
|
||||
}
|
||||
|
||||
BaseSharedFormulaRecord getTemplateFormula() {
|
||||
return this.templateFormula;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user