📄 writableworkbookimpl.java
字号:
}
outputFile.write(externSheet);
}
if(names != null)
{
for(int i = 0; i < names.size(); i++)
{
jxl.write.biff.NameRecord n = (jxl.write.biff.NameRecord)names.get(i);
outputFile.write(n);
}
}
if(drawingGroup != null)
drawingGroup.write(outputFile);
sharedStrings.write(outputFile);
EOFRecord eof = new EOFRecord();
outputFile.write(eof);
boolean sheetSelected = false;
WritableSheetImpl wsheet = null;
for(int i = 0; i < getNumberOfSheets() && !sheetSelected; i++)
{
wsheet = (WritableSheetImpl)getSheet(i);
if(wsheet.getSettings().isSelected())
sheetSelected = true;
}
if(!sheetSelected)
{
wsheet = (WritableSheetImpl)getSheet(0);
wsheet.getSettings().setSelected(true);
}
for(int i = 0; i < getNumberOfSheets(); i++)
{
outputFile.setData(IntegerHelper.getFourBytes(outputFile.getPos()), boundsheetPos[i] + 4);
wsheet = (WritableSheetImpl)getSheet(i);
wsheet.write();
}
}
private void copyWorkbook(Workbook w)
{
int numSheets = w.getNumberOfSheets();
wbProtected = w.isProtected();
Sheet s = null;
WritableSheetImpl ws = null;
for(int i = 0; i < numSheets; i++)
{
s = w.getSheet(i);
ws = (WritableSheetImpl)createSheet(s.getName(), i, false);
ws.copy(s);
}
}
public void copySheet(int s, String name, int index)
{
WritableSheet sheet = getSheet(s);
WritableSheetImpl ws = (WritableSheetImpl)createSheet(name, index);
ws.copy(sheet);
}
public void copySheet(String s, String name, int index)
{
WritableSheet sheet = getSheet(s);
WritableSheetImpl ws = (WritableSheetImpl)createSheet(name, index);
ws.copy(sheet);
}
public void setProtected(boolean prot)
{
wbProtected = prot;
}
private void rationalize()
{
jxl.biff.IndexMapping fontMapping = formatRecords.rationalizeFonts();
jxl.biff.IndexMapping formatMapping = formatRecords.rationalizeDisplayFormats();
jxl.biff.IndexMapping xfMapping = formatRecords.rationalize(fontMapping, formatMapping);
WritableSheetImpl wsi = null;
for(int i = 0; i < sheets.size(); i++)
{
wsi = (WritableSheetImpl)sheets.get(i);
wsi.rationalize(xfMapping, fontMapping, formatMapping);
}
}
public String getExternalSheetName(int index)
{
int supbookIndex = externSheet.getSupbookIndex(index);
jxl.write.biff.SupbookRecord sr = (jxl.write.biff.SupbookRecord)supbooks.get(supbookIndex);
int firstTab = externSheet.getFirstTabIndex(index);
if(sr.getType() == SupbookRecord.INTERNAL)
{
WritableSheet ws = getSheet(firstTab);
return ws.getName();
}
if(sr.getType() == SupbookRecord.EXTERNAL)
{
String name = sr.getFileName() + sr.getSheetName(firstTab);
return name;
} else
{
return "[UNKNOWN]";
}
}
public String getLastExternalSheetName(int index)
{
int supbookIndex = externSheet.getSupbookIndex(index);
jxl.write.biff.SupbookRecord sr = (jxl.write.biff.SupbookRecord)supbooks.get(supbookIndex);
int lastTab = externSheet.getLastTabIndex(index);
if(sr.getType() == SupbookRecord.INTERNAL)
{
WritableSheet ws = getSheet(lastTab);
return ws.getName();
}
if(sr.getType() == SupbookRecord.EXTERNAL)
Assert.verify(false);
return "[UNKNOWN]";
}
public BOFRecord getWorkbookBof()
{
return null;
}
public int getExternalSheetIndex(int index)
{
if(externSheet == null)
{
return index;
} else
{
Assert.verify(externSheet != null);
int firstTab = externSheet.getFirstTabIndex(index);
return firstTab;
}
}
public int getLastExternalSheetIndex(int index)
{
if(externSheet == null)
{
return index;
} else
{
Assert.verify(externSheet != null);
int lastTab = externSheet.getLastTabIndex(index);
return lastTab;
}
}
public int getExternalSheetIndex(String sheetName)
{
if(externSheet == null)
{
externSheet = new ExternalSheetRecord();
supbooks = new ArrayList();
supbooks.add(new jxl.write.biff.SupbookRecord(getNumberOfSheets(), settings));
}
boolean found = false;
Iterator i = sheets.iterator();
int sheetpos = 0;
WritableSheetImpl s = null;
while(i.hasNext() && !found)
{
s = (WritableSheetImpl)i.next();
if(s.getName().equals(sheetName))
found = true;
else
sheetpos++;
}
if(found)
{
jxl.write.biff.SupbookRecord supbook = (jxl.write.biff.SupbookRecord)supbooks.get(0);
if(supbook.getType() != SupbookRecord.INTERNAL || supbook.getNumberOfSheets() != getNumberOfSheets())
logger.warn("Cannot find sheet " + sheetName + " in supbook record");
return externSheet.getIndex(0, sheetpos);
}
int closeSquareBracketsIndex = sheetName.lastIndexOf(93);
int openSquareBracketsIndex = sheetName.lastIndexOf(91);
if(closeSquareBracketsIndex == -1 || openSquareBracketsIndex == -1)
return -1;
String worksheetName = sheetName.substring(closeSquareBracketsIndex + 1);
String workbookName = sheetName.substring(openSquareBracketsIndex + 1, closeSquareBracketsIndex);
String path = sheetName.substring(0, openSquareBracketsIndex);
String fileName = path + workbookName;
boolean supbookFound = false;
jxl.write.biff.SupbookRecord externalSupbook = null;
int supbookIndex = -1;
for(int ind = 0; ind < supbooks.size() && !supbookFound; ind++)
{
externalSupbook = (jxl.write.biff.SupbookRecord)supbooks.get(ind);
if(externalSupbook.getType() == SupbookRecord.EXTERNAL && externalSupbook.getFileName().equals(fileName))
{
supbookFound = true;
supbookIndex = ind;
}
}
if(!supbookFound)
{
externalSupbook = new jxl.write.biff.SupbookRecord(fileName, settings);
supbookIndex = supbooks.size();
supbooks.add(externalSupbook);
}
int sheetIndex = externalSupbook.getSheetIndex(worksheetName);
return externSheet.getIndex(supbookIndex, sheetIndex);
}
public int getLastExternalSheetIndex(String sheetName)
{
if(externSheet == null)
{
externSheet = new ExternalSheetRecord();
supbooks = new ArrayList();
supbooks.add(new jxl.write.biff.SupbookRecord(getNumberOfSheets(), settings));
}
boolean found = false;
Iterator i = sheets.iterator();
int sheetpos = 0;
WritableSheetImpl s = null;
while(i.hasNext() && !found)
{
s = (WritableSheetImpl)i.next();
if(s.getName().equals(sheetName))
found = true;
else
sheetpos++;
}
if(!found)
{
return -1;
} else
{
jxl.write.biff.SupbookRecord supbook = (jxl.write.biff.SupbookRecord)supbooks.get(0);
Assert.verify(supbook.getType() == SupbookRecord.INTERNAL && supbook.getNumberOfSheets() == getNumberOfSheets());
return externSheet.getIndex(0, sheetpos);
}
}
public void setColourRGB(Colour c, int r, int g, int b)
{
formatRecords.setColourRGB(c, r, g, b);
}
public RGB getColourRGB(Colour c)
{
return formatRecords.getColourRGB(c);
}
public String getName(int index)
{
Assert.verify(index >= 0 && index < names.size());
jxl.write.biff.NameRecord n = (jxl.write.biff.NameRecord)names.get(index);
return n.getName();
}
public int getNameIndex(String name)
{
jxl.write.biff.NameRecord nr = (jxl.write.biff.NameRecord)nameRecords.get(name);
return nr == null ? -1 : nr.getIndex();
}
void addRCIRCell(CellValue cv)
{
rcirCells.add(cv);
}
void columnInserted(WritableSheetImpl s, int col)
{
int externalSheetIndex = getExternalSheetIndex(s.getName());
CellValue cv;
for(Iterator i = rcirCells.iterator(); i.hasNext(); cv.columnInserted(s, externalSheetIndex, col))
cv = (CellValue)i.next();
}
void columnRemoved(WritableSheetImpl s, int col)
{
int externalSheetIndex = getExternalSheetIndex(s.getName());
CellValue cv;
for(Iterator i = rcirCells.iterator(); i.hasNext(); cv.columnRemoved(s, externalSheetIndex, col))
cv = (CellValue)i.next();
}
void rowInserted(WritableSheetImpl s, int row)
{
int externalSheetIndex = getExternalSheetIndex(s.getName());
CellValue cv;
for(Iterator i = rcirCells.iterator(); i.hasNext(); cv.rowInserted(s, externalSheetIndex, row))
cv = (CellValue)i.next();
}
void rowRemoved(WritableSheetImpl s, int row)
{
int externalSheetIndex = getExternalSheetIndex(s.getName());
CellValue cv;
for(Iterator i = rcirCells.iterator(); i.hasNext(); cv.rowRemoved(s, externalSheetIndex, row))
cv = (CellValue)i.next();
}
public WritableCell findCellByName(String name)
{
jxl.write.biff.NameRecord nr = (jxl.write.biff.NameRecord)nameRecords.get(name);
if(nr == null)
{
return null;
} else
{
NameRecord.NameRange ranges[] = nr.getRanges();
int sheetIndex = getExternalSheetIndex(ranges[0].getExternalSheet());
WritableSheet s = getSheet(sheetIndex);
WritableCell cell = s.getWritableCell(ranges[0].getFirstColumn(), ranges[0].getFirstRow());
return cell;
}
}
public Range[] findByName(String name)
{
jxl.write.biff.NameRecord nr = (jxl.write.biff.NameRecord)nameRecords.get(name);
if(nr == null)
return null;
NameRecord.NameRange ranges[] = nr.getRanges();
Range cellRanges[] = new Range[ranges.length];
for(int i = 0; i < ranges.length; i++)
cellRanges[i] = new RangeImpl(this, getExternalSheetIndex(ranges[i].getExternalSheet()), ranges[i].getFirstColumn(), ranges[i].getFirstRow(), getLastExternalSheetIndex(ranges[i].getExternalSheet()), ranges[i].getLastColumn(), ranges[i].getLastRow());
return cellRanges;
}
void addDrawing(DrawingGroupObject d)
{
if(drawingGroup == null)
drawingGroup = new DrawingGroup(Origin.WRITE);
drawingGroup.add(d);
}
void removeDrawing(Drawing d)
{
Assert.verify(drawingGroup != null);
drawingGroup.remove(d);
}
DrawingGroup getDrawingGroup()
{
return drawingGroup;
}
public String[] getRangeNames()
{
String n[] = new String[names.size()];
for(int i = 0; i < names.size(); i++)
{
jxl.write.biff.NameRecord nr = (jxl.write.biff.NameRecord)names.get(i);
n[i] = nr.getName();
}
return n;
}
public void removeRangeName(String name)
{
int pos = 0;
boolean found = false;
for(Iterator i = names.iterator(); i.hasNext() && !found;)
{
jxl.write.biff.NameRecord nr = (jxl.write.biff.NameRecord)i.next();
if(nr.getName().equals(name))
found = true;
else
pos++;
}
if(found)
names.remove(pos);
}
Styles getStyles()
{
return styles;
}
public void addNameArea(String name, WritableSheet sheet, int firstCol, int firstRow, int lastCol, int lastRow)
{
if(names == null)
names = new ArrayList();
int externalSheetIndex = getExternalSheetIndex(sheet.getName());
jxl.write.biff.NameRecord nr = new jxl.write.biff.NameRecord(name, names.size(), externalSheetIndex, firstRow, lastRow, firstCol, lastCol);
names.add(nr);
nameRecords.put(name, nr);
}
WorkbookSettings getSettings()
{
return settings;
}
public WritableCell getWritableCell(String loc)
{
WritableSheet s = getSheet(CellReferenceHelper.getSheet(loc));
return s.getWritableCell(loc);
}
public WritableSheet importSheet(String name, int index, Sheet sheet)
{
WritableSheet ws = createSheet(name, index);
((WritableSheetImpl)ws).importSheet(sheet);
return ws;
}
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$WritableWorkbookImpl != null ? class$jxl$write$biff$WritableWorkbookImpl : (class$jxl$write$biff$WritableWorkbookImpl = class$("jxl.write.biff.WritableWorkbookImpl")));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -