78 lines
1.9 KiB
Java
78 lines
1.9 KiB
Java
package jxl.read.biff;
|
|
|
|
import common.Logger;
|
|
import jxl.WorkbookSettings;
|
|
import jxl.biff.IntegerHelper;
|
|
import jxl.biff.RecordData;
|
|
|
|
public class ExternalSheetRecord extends RecordData {
|
|
private static Logger logger = Logger.getLogger(ExternalSheetRecord.class);
|
|
|
|
private static class Biff7 {
|
|
private Biff7() {}
|
|
}
|
|
|
|
public static Biff7 biff7 = new Biff7();
|
|
|
|
private XTI[] xtiArray;
|
|
|
|
private static class XTI {
|
|
int supbookIndex;
|
|
|
|
int firstTab;
|
|
|
|
int lastTab;
|
|
|
|
XTI(int s, int f, int l) {
|
|
this.supbookIndex = s;
|
|
this.firstTab = f;
|
|
this.lastTab = l;
|
|
}
|
|
}
|
|
|
|
ExternalSheetRecord(Record t, WorkbookSettings ws) {
|
|
super(t);
|
|
byte[] data = getRecord().getData();
|
|
int numxtis = IntegerHelper.getInt(data[0], data[1]);
|
|
if (data.length < numxtis * 6 + 2) {
|
|
this.xtiArray = new XTI[0];
|
|
logger.warn("Could not process external sheets. Formulas may be compromised.");
|
|
return;
|
|
}
|
|
this.xtiArray = new XTI[numxtis];
|
|
int pos = 2;
|
|
for (int i = 0; i < numxtis; i++) {
|
|
int s = IntegerHelper.getInt(data[pos], data[pos + 1]);
|
|
int f = IntegerHelper.getInt(data[pos + 2], data[pos + 3]);
|
|
int l = IntegerHelper.getInt(data[pos + 4], data[pos + 5]);
|
|
this.xtiArray[i] = new XTI(s, f, l);
|
|
pos += 6;
|
|
}
|
|
}
|
|
|
|
ExternalSheetRecord(Record t, WorkbookSettings settings, Biff7 dummy) {
|
|
super(t);
|
|
logger.warn("External sheet record for Biff 7 not supported");
|
|
}
|
|
|
|
public int getNumRecords() {
|
|
return (this.xtiArray != null) ? this.xtiArray.length : 0;
|
|
}
|
|
|
|
public int getSupbookIndex(int index) {
|
|
return (this.xtiArray[index]).supbookIndex;
|
|
}
|
|
|
|
public int getFirstTabIndex(int index) {
|
|
return (this.xtiArray[index]).firstTab;
|
|
}
|
|
|
|
public int getLastTabIndex(int index) {
|
|
return (this.xtiArray[index]).lastTab;
|
|
}
|
|
|
|
public byte[] getData() {
|
|
return getRecord().getData();
|
|
}
|
|
}
|