📄 stringformularecord.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: StringFormulaRecord.java
package jxl.read.biff;
import common.Assert;
import common.Logger;
import jxl.*;
import jxl.biff.*;
import jxl.biff.formula.*;
// Referenced classes of package jxl.read.biff:
// CellValue, Record, File, SheetImpl,
// WorkbookParser, BOFRecord
class StringFormulaRecord extends CellValue
implements LabelCell, FormulaData, StringFormulaCell
{
private static Logger logger;
private String value;
private ExternalSheet externalSheet;
private WorkbookMethods nameTable;
private String formulaString;
private byte data[];
static Class class$jxl$read$biff$StringFormulaRecord; /* synthetic field */
public StringFormulaRecord(Record t, File excelFile, FormattingRecords fr, ExternalSheet es, WorkbookMethods nt, SheetImpl si, WorkbookSettings ws)
{
super(t, fr, si);
externalSheet = es;
nameTable = nt;
data = getRecord().getData();
int pos = excelFile.getPos();
Record nextRecord = excelFile.next();
int count;
for(count = 0; nextRecord.getType() != Type.STRING && count < 4; count++)
nextRecord = excelFile.next();
Assert.verify(count < 4, " @ " + pos);
readString(nextRecord.getData(), ws);
}
public StringFormulaRecord(Record t, FormattingRecords fr, ExternalSheet es, WorkbookMethods nt, SheetImpl si)
{
super(t, fr, si);
externalSheet = es;
nameTable = nt;
data = getRecord().getData();
value = "";
}
private void readString(byte d[], WorkbookSettings ws)
{
int pos = 0;
int chars = IntegerHelper.getInt(d[0], d[1]);
if(chars == 0)
{
value = "";
return;
}
pos += 2;
int optionFlags = d[pos];
pos++;
if((optionFlags & 0xf) != optionFlags)
{
pos = 0;
chars = IntegerHelper.getInt(d[0], (byte)0);
optionFlags = d[1];
pos = 2;
}
boolean extendedString = (optionFlags & 0x4) != 0;
boolean richString = (optionFlags & 0x8) != 0;
if(richString)
pos += 2;
if(extendedString)
pos += 4;
boolean asciiEncoding = (optionFlags & 0x1) == 0;
if(asciiEncoding)
value = StringHelper.getString(d, chars, pos, ws);
else
value = StringHelper.getUnicodeString(d, chars, pos);
}
public String getContents()
{
return value;
}
public String getString()
{
return value;
}
public CellType getType()
{
return CellType.STRING_FORMULA;
}
public byte[] getFormulaData()
throws FormulaException
{
if(!getSheet().getWorkbook().getWorkbookBof().isBiff8())
{
throw new FormulaException(FormulaException.BIFF8_SUPPORTED);
} else
{
byte d[] = new byte[data.length - 6];
System.arraycopy(data, 6, d, 0, data.length - 6);
return d;
}
}
public String getFormula()
throws FormulaException
{
if(formulaString == null)
{
byte tokens[] = new byte[data.length - 22];
System.arraycopy(data, 22, tokens, 0, tokens.length);
FormulaParser fp = new FormulaParser(tokens, this, externalSheet, nameTable, getSheet().getWorkbook().getSettings());
fp.parse();
formulaString = fp.getFormula();
}
return formulaString;
}
static Class class$(String x0)
{
return Class.forName(x0);
ClassNotFoundException x1;
x1;
throw new NoClassDefFoundError(x1.getMessage());
}
static
{
logger = Logger.getLogger(class$jxl$read$biff$StringFormulaRecord != null ? class$jxl$read$biff$StringFormulaRecord : (class$jxl$read$biff$StringFormulaRecord = class$("jxl.read.biff.StringFormulaRecord")));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -