⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mergedcells.java

📁 主要介绍snmp编程的一些例子对于snmp编程的人非常重要
💻 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 + -