📄 mergedcells.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: MergedCells.java
package jxl.write.biff;
import common.Assert;
import common.Logger;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import jxl.*;
import jxl.biff.SheetRangeImpl;
import jxl.write.*;
// Referenced classes of package jxl.write.biff:
// WritableSheetImpl, MergedCellsRecord, File
class MergedCells
{
private static Logger logger;
private ArrayList ranges;
private WritableSheet sheet;
private static final int maxRangesPerSheet = 1020;
static Class class$jxl$write$biff$MergedCells; /* synthetic field */
public MergedCells(WritableSheet ws)
{
ranges = new ArrayList();
sheet = ws;
}
void add(Range r)
{
ranges.add(r);
}
void insertRow(int row)
{
SheetRangeImpl sr = null;
for(Iterator i = ranges.iterator(); i.hasNext(); sr.insertRow(row))
sr = (SheetRangeImpl)i.next();
}
void insertColumn(int col)
{
SheetRangeImpl sr = null;
for(Iterator i = ranges.iterator(); i.hasNext(); sr.insertColumn(col))
sr = (SheetRangeImpl)i.next();
}
void removeColumn(int col)
{
SheetRangeImpl sr = null;
for(Iterator i = ranges.iterator(); i.hasNext();)
{
sr = (SheetRangeImpl)i.next();
if(sr.getTopLeft().getColumn() == col && sr.getBottomRight().getColumn() == col)
ranges.remove(ranges.indexOf(sr));
else
sr.removeColumn(col);
}
}
void removeRow(int row)
{
SheetRangeImpl sr = null;
for(Iterator i = ranges.iterator(); i.hasNext();)
{
sr = (SheetRangeImpl)i.next();
if(sr.getTopLeft().getRow() == row && sr.getBottomRight().getRow() == row)
i.remove();
else
sr.removeRow(row);
}
}
Range[] getMergedCells()
{
Range cells[] = new Range[ranges.size()];
for(int i = 0; i < cells.length; i++)
cells[i] = (Range)ranges.get(i);
return cells;
}
void unmergeCells(Range r)
{
int index = ranges.indexOf(r);
if(index != -1)
ranges.remove(index);
}
private void checkIntersections()
{
ArrayList newcells = new ArrayList(ranges.size());
Iterator mci = ranges.iterator();
do
{
if(!mci.hasNext())
break;
SheetRangeImpl r = (SheetRangeImpl)mci.next();
Iterator i = newcells.iterator();
SheetRangeImpl range = null;
boolean intersects = false;
do
{
if(!i.hasNext() || intersects)
break;
range = (SheetRangeImpl)i.next();
if(range.intersects(r))
{
logger.warn("Could not merge cells " + r + " as they clash with an existing set of merged cells.");
intersects = true;
}
} while(true);
if(!intersects)
newcells.add(r);
} while(true);
ranges = newcells;
}
private void checkRanges()
{
try
{
SheetRangeImpl range = null;
for(int i = 0; i < ranges.size(); i++)
{
range = (SheetRangeImpl)ranges.get(i);
Cell tl = range.getTopLeft();
Cell br = range.getBottomRight();
boolean found = false;
for(int c = tl.getColumn(); c <= br.getColumn(); c++)
{
for(int r = tl.getRow(); r <= br.getRow(); r++)
{
Cell cell = sheet.getCell(c, r);
if(cell.getType() == CellType.EMPTY)
continue;
if(!found)
{
found = true;
} else
{
logger.warn("Range " + range + " contains more than one data cell. " + "Setting the other cells to blank.");
Blank b = new Blank(c, r);
sheet.addCell(b);
}
}
}
}
}
catch(WriteException e)
{
Assert.verify(false);
}
}
void write(File outputFile)
throws IOException
{
if(ranges.size() == 0)
return;
WorkbookSettings ws = ((WritableSheetImpl)sheet).getWorkbookSettings();
if(!ws.getMergedCellCheckingDisabled())
{
checkIntersections();
checkRanges();
}
if(ranges.size() < 1020)
{
MergedCellsRecord mcr = new MergedCellsRecord(ranges);
outputFile.write(mcr);
return;
}
int numRecordsRequired = ranges.size() / 1020 + 1;
int pos = 0;
for(int i = 0; i < numRecordsRequired; i++)
{
int numranges = Math.min(1020, ranges.size() - pos);
ArrayList cells = new ArrayList(numranges);
for(int j = 0; j < numranges; j++)
cells.add(ranges.get(pos + j));
MergedCellsRecord mcr = new MergedCellsRecord(cells);
outputFile.write(mcr);
pos += numranges;
}
}
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$MergedCells != null ? class$jxl$write$biff$MergedCells : (class$jxl$write$biff$MergedCells = class$("jxl.write.biff.MergedCells")));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -