Files
HRMS/hrmsEjb/jxl/read/biff/ExternalSheetRecord.java
2025-07-28 13:56:49 +05:30

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();
}
}