📄 formularecord.java
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi
// Source File Name: FormulaRecord.java
package jxl.write.biff;
import common.Assert;
import common.Logger;
import jxl.*;
import jxl.biff.*;
import jxl.biff.formula.*;
import jxl.format.CellFormat;
import jxl.write.WritableCell;
// Referenced classes of package jxl.write.biff:
// CellValue, ReadFormulaRecord, WritableSheetImpl, WritableWorkbookImpl,
// SharedStrings
public class FormulaRecord extends CellValue
implements FormulaData
{
private static Logger logger;
private String formulaToParse;
private FormulaParser parser;
private String formulaString;
private byte formulaBytes[];
private CellValue copiedFrom;
static Class class$jxl$write$biff$FormulaRecord; /* synthetic field */
public FormulaRecord(int c, int r, String f)
{
super(Type.FORMULA2, c, r);
formulaToParse = f;
copiedFrom = null;
}
public FormulaRecord(int c, int r, String f, CellFormat st)
{
super(Type.FORMULA, c, r, st);
formulaToParse = f;
copiedFrom = null;
}
protected FormulaRecord(int c, int r, FormulaRecord fr)
{
super(Type.FORMULA, c, r, fr);
copiedFrom = fr;
formulaBytes = new byte[fr.formulaBytes.length];
System.arraycopy(fr.formulaBytes, 0, formulaBytes, 0, formulaBytes.length);
}
protected FormulaRecord(int c, int r, ReadFormulaRecord rfr)
{
super(Type.FORMULA, c, r, rfr);
try
{
copiedFrom = rfr;
byte readFormulaData[] = rfr.getFormulaData();
formulaBytes = new byte[readFormulaData.length - 16];
System.arraycopy(readFormulaData, 16, formulaBytes, 0, formulaBytes.length);
}
catch(FormulaException e)
{
logger.error("", e);
}
}
private void initialize(WorkbookSettings ws, ExternalSheet es, WorkbookMethods nt)
{
if(copiedFrom != null)
{
initializeCopiedFormula(ws, es, nt);
return;
}
parser = new FormulaParser(formulaToParse, es, nt, ws);
try
{
parser.parse();
formulaString = parser.getFormula();
formulaBytes = parser.getBytes();
}
catch(FormulaException e)
{
logger.warn(e.getMessage() + " when parsing formula " + formulaToParse + " in cell " + getSheet().getName() + "!" + CellReferenceHelper.getCellReference(getColumn(), getRow()));
try
{
formulaToParse = "ERROR(1)";
parser = new FormulaParser(formulaToParse, es, nt, ws);
parser.parse();
formulaString = parser.getFormula();
formulaBytes = parser.getBytes();
}
catch(FormulaException e2)
{
logger.error("", e2);
}
}
}
private void initializeCopiedFormula(WorkbookSettings ws, ExternalSheet es, WorkbookMethods nt)
{
try
{
parser = new FormulaParser(formulaBytes, this, es, nt, ws);
parser.parse();
parser.adjustRelativeCellReferences(getColumn() - copiedFrom.getColumn(), getRow() - copiedFrom.getRow());
formulaString = parser.getFormula();
formulaBytes = parser.getBytes();
}
catch(FormulaException e)
{
try
{
formulaToParse = "ERROR(1)";
parser = new FormulaParser(formulaToParse, es, nt, ws);
parser.parse();
formulaString = parser.getFormula();
formulaBytes = parser.getBytes();
}
catch(FormulaException e2)
{
logger.error("", e2);
}
}
}
void setCellDetails(FormattingRecords fr, SharedStrings ss, WritableSheetImpl s)
{
super.setCellDetails(fr, ss, s);
initialize(s.getWorkbookSettings(), s.getWorkbook(), s.getWorkbook());
s.getWorkbook().addRCIRCell(this);
}
public byte[] getData()
{
byte celldata[] = super.getData();
byte formulaData[] = getFormulaData();
byte data[] = new byte[formulaData.length + celldata.length];
System.arraycopy(celldata, 0, data, 0, celldata.length);
System.arraycopy(formulaData, 0, data, celldata.length, formulaData.length);
return data;
}
public CellType getType()
{
return CellType.ERROR;
}
public String getContents()
{
return formulaString;
}
public byte[] getFormulaData()
{
byte data[] = new byte[formulaBytes.length + 16];
System.arraycopy(formulaBytes, 0, data, 16, formulaBytes.length);
data[6] = 16;
data[7] = 64;
data[12] = -32;
data[13] = -4;
data[8] |= 0x2;
IntegerHelper.getTwoBytes(formulaBytes.length, data, 14);
return data;
}
public WritableCell copyTo(int col, int row)
{
Assert.verify(false);
return null;
}
void columnInserted(Sheet s, int sheetIndex, int col)
{
parser.columnInserted(sheetIndex, col, s == getSheet());
formulaBytes = parser.getBytes();
}
void columnRemoved(Sheet s, int sheetIndex, int col)
{
parser.columnRemoved(sheetIndex, col, s == getSheet());
formulaBytes = parser.getBytes();
}
void rowInserted(Sheet s, int sheetIndex, int row)
{
parser.rowInserted(sheetIndex, row, s == getSheet());
formulaBytes = parser.getBytes();
}
void rowRemoved(Sheet s, int sheetIndex, int row)
{
parser.rowRemoved(sheetIndex, row, s == getSheet());
formulaBytes = parser.getBytes();
}
static Class class$(String x0)
{
return Class.forName(x0);
ClassNotFoundException x1;
x1;
throw new NoClassDefFoundError(x1.getMessage());
}
static
{
logger = Logger.getLogger(class$jxl$write$biff$FormulaRecord != null ? class$jxl$write$biff$FormulaRecord : (class$jxl$write$biff$FormulaRecord = class$("jxl.write.biff.FormulaRecord")));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -