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

📄 zdefaultbook.java

📁 用Java写的报表.功能如下: 0.内建网络打印,网络预览功能! 1.文件操作。包括url 指定的文件。 2.全功能打印支持。包括打印预览。 3.Undo 和 redo。 4.合并单元格。 5.Cel
💻 JAVA
字号:
/*
 * Copyright 2002 EZCell , Inc. All rights reserved.
 * Version  1.0.
 * Author   W.John
 */
/*
 * put your module comment here
 * formatted with JxBeauty (c) johann.langhofer@nextra.at
 */
package ezcell;

import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterJob;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.net.URL;
import java.net.URLConnection;
import java.util.Vector;
import javax.swing.event.ChangeEvent;


/**
 * DOCUMENT ME!
 *
 * @version 1.00
 * @author W.John
 */
public class ZDefaultBook implements Serializable, ZBook {
    final static String ZCELL_FILE = "ZCELL_FILE";
    private String fileName;
    private boolean modified;
    private Vector sheets;
    private Vector listeners;
    private ZSheet header;
    private ZSheet footer;
    private String title;
    private PageFormat pf = PrinterJob.getPrinterJob().defaultPage();
    private int headerHeight = 80;
    private int footerHeight = 80;

    public ZDefaultBook() {
        try {
            init();
            clear();
        } catch (Exception e) {
        }
    }

    /**
     *
     * @return
     */
    public int getCount() {
        return sheets.size();
    }

    /**
     *
     * @return
     */
    public String getFileName() {
        return fileName;
    }

    /**
     *
     * @return
     */
    public ZSheet getFooter() {
        return footer;
    }

    /**
     *
     * @param h
     */
    public void setFooterHeight(int h) {
        if (footerHeight == h) {
            return;
        }

        footerHeight = h;
        firePageFormatChanged();
    }

    /**
     *
     * @return
     */
    public int getFooterHeight() {
        return footerHeight;
    }

    /**
     *
     * @return
     */
    public ZSheet getHeader() {
        return header;
    }

    /**
     *
     * @param h
     */
    public void setHeaderHeight(int h) {
        if (headerHeight == h) {
            return;
        }

        headerHeight = h;
        firePageFormatChanged();
    }

    /**
     *
     * @return
     */
    public int getHeaderHeight() {
        return headerHeight;
    }

    /**
     *
     * @param modified
     */
    public void setModified(boolean modified) {
        this.modified = modified;
    }

    /**
     *
     * @return
     */
    public boolean isModified() {
        return modified;
    }

    /**
     *
     * @param format
     */
    public void setPageFormat(PageFormat format) {
        pf = format;
        firePageFormatChanged();
    }

    /**
     *
     * @return
     */
    public PageFormat getPageFormat() {
        return pf;
    }

    /**
     *
     * @param index
     *
     * @return
     */
    public ZSheet getSheet(int index) {
        return (ZSheet) sheets.get(index);
    }

    /**
     *
     * @param title
     */
    public void setTitle(String title) {
        if ((this.title != null) && this.title.equals(title)) {
            return;
        }

        this.title = title;
    }

    /**
     *
     * @return
     */
    public String getTitle() {
        return title;
    }

    /**
     *
     * @param sheet
     */
    public void add(ZSheet sheet) {
        ((ZDefaultSheet) sheet).setBook(this);
        sheets.add(sheet);
        modified = true;
        fireSheetAdded(sheet);
    }

    /**
     *
     * @return
     */
    public ZSheet add() {
        ZSheet sheet = new ZDefaultSheet();
        add(sheet);

        return sheet;
    }

    /**
     */
    public void addFooter() {
        if (footer != null) {
            return;
        }

        footer = new ZDefaultSheet(this);

        ChangeEvent e = new ChangeEvent(this);

        for (int i = 0; i < listeners.size(); i++) {
            ZBookListener lst = (ZBookListener) listeners.get(i);
            lst.footerAdded(e);
        }
    }

    /**
     */
    public void addHeader() {
        if (header != null) {
            return;
        }

        header = new ZDefaultSheet(this);

        ChangeEvent e = new ChangeEvent(this);

        for (int i = 0; i < listeners.size(); i++) {
            ZBookListener lst = (ZBookListener) listeners.get(i);
            lst.headerAdded(e);
        }
    }

    /**
     *
     * @param lst
     */
    public void addListener(ZBookListener lst) {
        listeners.add(lst);
    }

    /**
     */
    public void clear() {
        for (int i = sheets.size() - 1; i >= 0; i--)
            remove(i);

        add();
        setModified(false);
    }

    /**
     *
     * @param sheet
     */
    public void fireSheetAdded(ZSheet sheet) {
        ChangeEvent e = new ChangeEvent(this);

        for (int i = 0; i < listeners.size(); i++) {
            ZBookListener lst = (ZBookListener) listeners.get(i);
            lst.sheetAdded(e, sheet);
        }
    }

    /**
     *
     * @param sheet
     */
    public void remove(ZSheet sheet) {
        sheets.remove(sheet);
        modified = true;
        fireSheetRemoved(sheet);
    }

    /**
     *
     * @param index
     */
    public void remove(int index) {
        if (index < sheets.size()) {
            remove((ZSheet) sheets.get(index));
        }
    }

    /**
     */
    public void removeFooter() {
        footer = null;

        ChangeEvent e = new ChangeEvent(this);

        for (int i = 0; i < listeners.size(); i++) {
            ZBookListener lst = (ZBookListener) listeners.get(i);
            lst.footerRemoved(e);
        }
    }

    /**
     */
    public void removeHeader() {
        header = null;

        ChangeEvent e = new ChangeEvent(this);

        for (int i = 0; i < listeners.size(); i++) {
            ZBookListener lst = (ZBookListener) listeners.get(i);
            lst.headerRemoved(e);
        }
    }

    /**
     *
     * @param lst
     */
    public void removeListener(ZBookListener lst) {
        listeners.remove(lst);
    }

    /**
     *
     * @throws Exception
     */
    public void save() throws Exception {
        saveAs(fileName);
    }

    /**
     *
     * @param fileName
     *
     * @throws Exception
     */
    public void saveAs(String fileName) throws Exception {
        FileOutputStream fo = new FileOutputStream(fileName);
        ObjectOutputStream oo = new ObjectOutputStream(fo);
        oo.writeObject(ZCELL_FILE);
        oo.writeObject(this);
        oo.close();
        this.fileName = fileName;
        modified = false;
    }

    static ZDefaultBook create() {
        return new ZDefaultBook();
    }

    static ZDefaultBook open(String fileName) throws Exception {
        try {
            InputStream is = new FileInputStream(fileName);
            ZDefaultBook rb = open(is);
            rb.fileName = fileName;

            return rb;
        } catch (Exception ex) {
            throw new Exception("file ;" + fileName + " is not a valid ZCell file! ");
        }
    }

    static ZDefaultBook open(URL url) throws Exception {
        try {
            URLConnection uc = url.openConnection();
            uc.connect();

            ZDefaultBook rb = open(uc.getInputStream());

            return rb;
        } catch (Exception ex) {
            throw new Exception(url.toString() + "can not be opened! ");
        }
    }

    static ZDefaultBook open(InputStream is) throws Exception {
        ObjectInputStream2 oi = new ObjectInputStream2(is);
        String ff = (String) oi.readObject();

        if (!ff.equals(ZCELL_FILE)) {
            throw new Exception(); // "file ;"+fileName+" is not a valid ZCell file! ");
        }

        ZDefaultBook book = (ZDefaultBook) oi.readObject();
        oi.close();

        return book;
    }

    /**
     */
    private void firePageFormatChanged() {
        ChangeEvent e = new ChangeEvent(this);

        for (int i = 0; i < listeners.size(); i++) {
            ZBookListener lst = (ZBookListener) listeners.get(i);
            lst.pageFormatChanged(e);
        }
    }

    /**
     *
     * @param sheet
     */
    private void fireSheetRemoved(ZSheet sheet) {
        ChangeEvent e = new ChangeEvent(this);

        for (int i = 0; i < listeners.size(); i++) {
            ZBookListener lst = (ZBookListener) listeners.get(i);
            lst.sheetRemoved(e, sheet);
        }
    }

    /**
     */
    private void init() {
        fileName = "Untitle.zs";
        modified = false;
        sheets = new Vector();
        listeners = new Vector();
        header = new ZDefaultSheet(this);
        header.setTitle("header");
        footer = new ZDefaultSheet(this);
        footer.setTitle("footer");
    }

    /**
     *
     * @param ois
     *
     * @throws ClassNotFoundException
     * @throws IOException
     */
    private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException {
        ObjectInputStream2 ois2 = (ObjectInputStream2) ois;
        init();
        ois2.book = this;
        title = (String) ois.readObject();
        sheets = (Vector) ois.readObject();
        header = (ZSheet) ois.readObject();
        footer = (ZSheet) ois.readObject();
        headerHeight = ois.readInt();
        footerHeight = ois.readInt();

        // read PageFormat,
        int o;
        double x;
        double y;
        double dx;
        double dy;
        double sx;
        double sy;
        o = ois.readInt();
        x = ois.readDouble();
        y = ois.readDouble();
        dx = ois.readDouble();
        dy = ois.readDouble();
        sx = ois.readDouble();
        sy = ois.readDouble();
        pf = PrinterJob.getPrinterJob().defaultPage();
        pf.setOrientation(o);

        Paper paper = new Paper();
        paper.setImageableArea(x, y, dx, dy);
        paper.setSize(sx, sy);
        pf.setPaper(paper);
    }

    /**
     *
     * @param oos
     *
     * @throws IOException
     */
    private void writeObject(ObjectOutputStream oos) throws IOException {
        oos.writeObject(title);
        oos.writeObject(sheets);
        oos.writeObject(header);
        oos.writeObject(footer);
        oos.writeInt(headerHeight);
        oos.writeInt(footerHeight);


        // write pageformat
        oos.writeInt(pf.getOrientation());
        oos.writeDouble(pf.getImageableX());
        oos.writeDouble(pf.getImageableY());
        oos.writeDouble(pf.getImageableWidth());
        oos.writeDouble(pf.getImageableHeight());
        oos.writeDouble(pf.getWidth());
        oos.writeDouble(pf.getHeight());
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -