first commit

This commit is contained in:
2025-07-28 13:56:49 +05:30
commit e9eb805edb
3438 changed files with 520990 additions and 0 deletions

View File

@@ -0,0 +1,73 @@
package jxl.read.biff;
import common.Logger;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import jxl.CellType;
import jxl.NumberCell;
import jxl.NumberFormulaCell;
import jxl.biff.DoubleHelper;
import jxl.biff.FormattingRecords;
import jxl.biff.FormulaData;
import jxl.biff.IntegerHelper;
import jxl.biff.WorkbookMethods;
import jxl.biff.formula.ExternalSheet;
import jxl.biff.formula.FormulaException;
import jxl.biff.formula.FormulaParser;
public class SharedNumberFormulaRecord extends BaseSharedFormulaRecord implements NumberCell, FormulaData, NumberFormulaCell {
private static Logger logger = Logger.getLogger(SharedNumberFormulaRecord.class);
private double value;
private NumberFormat format;
private FormattingRecords formattingRecords;
private static DecimalFormat defaultFormat = new DecimalFormat("#.###");
public SharedNumberFormulaRecord(Record t, File excelFile, double v, FormattingRecords fr, ExternalSheet es, WorkbookMethods nt, SheetImpl si) {
super(t, fr, es, nt, si, excelFile.getPos());
this.value = v;
this.format = defaultFormat;
}
final void setNumberFormat(NumberFormat f) {
if (f != null)
this.format = f;
}
public double getValue() {
return this.value;
}
public String getContents() {
return !Double.isNaN(this.value) ? this.format.format(this.value) : "";
}
public CellType getType() {
return CellType.NUMBER_FORMULA;
}
public byte[] getFormulaData() throws FormulaException {
if (!getSheet().getWorkbookBof().isBiff8())
throw new FormulaException(FormulaException.biff8Supported);
FormulaParser fp = new FormulaParser(getTokens(), this, getExternalSheet(), getNameTable(), getSheet().getWorkbook().getSettings());
fp.parse();
byte[] rpnTokens = fp.getBytes();
byte[] data = new byte[rpnTokens.length + 22];
IntegerHelper.getTwoBytes(getRow(), data, 0);
IntegerHelper.getTwoBytes(getColumn(), data, 2);
IntegerHelper.getTwoBytes(getXFIndex(), data, 4);
DoubleHelper.getIEEEBytes(this.value, data, 6);
System.arraycopy(rpnTokens, 0, data, 22, rpnTokens.length);
IntegerHelper.getTwoBytes(rpnTokens.length, data, 20);
byte[] d = new byte[data.length - 6];
System.arraycopy(data, 6, d, 0, data.length - 6);
return d;
}
public NumberFormat getNumberFormat() {
return this.format;
}
}