亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sheetwriter.java

?? java開發文檔之excel:jexcelapi_2_6_3.tar
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
/*********************************************************************
*
*      Copyright (C) 2002 Andrew Khan
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/

package jxl.write.biff;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.TreeSet;

import common.Assert;
import common.Logger;

import jxl.Cell;
import jxl.CellFeatures;
import jxl.Range;
import jxl.SheetSettings;
import jxl.WorkbookSettings;
import jxl.biff.AutoFilter;
import jxl.biff.ConditionalFormat;
import jxl.biff.DataValidation;
import jxl.biff.DataValiditySettingsRecord;
import jxl.biff.DVParser;
import jxl.biff.WorkspaceInformationRecord;
import jxl.biff.XFRecord;
import jxl.biff.drawing.Chart;
import jxl.biff.drawing.SheetDrawingWriter;
import jxl.biff.formula.FormulaException;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.Colour;
import jxl.write.Blank;
import jxl.write.WritableCell;
import jxl.write.WritableCellFormat;
import jxl.write.WritableHyperlink;
import jxl.write.WriteException;

/**
 * Contains the functionality necessary for writing out a sheet.  Originally
 * this was incorporated in WritableSheetImpl, but was moved out into
 * a dedicated class in order to reduce the over bloated nature of that
 * class
 */
final class SheetWriter
{
  /**
   * The logger
   */
  private static Logger logger = Logger.getLogger(SheetWriter.class);
    
  /**
   * A handle to the output file which the binary data is written to
   */
  private File outputFile;

  /**
   * The rows within this sheet
   */
  private RowRecord[] rows;

  /**
   * A number of rows.  This is a count of the maximum row number + 1
   */
  private int numRows;

  /**
   * The number of columns.  This is a count of the maximum column number + 1
   */
  private int numCols;

  /**
   * The page header
   */
  private HeaderRecord header;
  /**
   * The page footer
   */
  private FooterRecord footer;
  /**
   * The settings for the sheet
   */
  private SheetSettings settings;
  /**
   * The settings for the workbook
   */
  private WorkbookSettings workbookSettings;
  /**
   * Array of row page breaks
   */
  private ArrayList rowBreaks;
  /**
   * Array of column page breaks
   */
  private ArrayList columnBreaks;
  /**
   * Array of hyperlinks
   */
  private ArrayList hyperlinks;
  /**
   * Array of conditional formats
   */
  private ArrayList conditionalFormats;
  /**
   * The autofilter info
   */
  private AutoFilter autoFilter;
  /**
   * Array of validated cells
   */
  private ArrayList validatedCells;
  /**
   * The data validation validations
   */
  private DataValidation dataValidation;

  /**
   * The list of merged ranges
   */
  private MergedCells mergedCells;

  /**
   * The environment specific print record
   */
  private PLSRecord plsRecord;

  /**
   * The button property ste
   */
  private ButtonPropertySetRecord buttonPropertySet;

  /**
   * The workspace options
   */
  private WorkspaceInformationRecord workspaceOptions;
  /** 
   * The column format overrides
   */
  private TreeSet columnFormats;

  /**
   * The list of drawings
   */
  private SheetDrawingWriter drawingWriter;

  /**
   * Flag indicates that this sheet contains just a chart, and nothing
   * else
   */
  private boolean chartOnly;

  /**
   * A handle back to the writable sheet, in order for this class
   * to invoke the get accessor methods
   */
  private WritableSheetImpl sheet;


  /**
   * Creates a new <code>SheetWriter</code> instance.
   *
   * @param of the output file
   */
  public SheetWriter(File of,
                     WritableSheetImpl wsi,
                     WorkbookSettings ws)
  {
    outputFile = of;
    sheet = wsi;
    workspaceOptions = new WorkspaceInformationRecord();
    workbookSettings = ws;
    chartOnly = false;
    drawingWriter = new SheetDrawingWriter(ws);
  }

  /**
   * Writes out this sheet.  First writes out the standard sheet
   * information then writes out each row in turn.
   * Once all the rows have been written out, it retrospectively adjusts
   * the offset references in the file
   * 
   * @exception IOException 
   */
  public void write() throws IOException
  {
    Assert.verify(rows != null);

    // This worksheet consists of just one chart, so write it and return
    if (chartOnly)
    {
      drawingWriter.write(outputFile);
      return;
    }

    BOFRecord bof = new BOFRecord(BOFRecord.sheet);
    outputFile.write(bof);

    // Compute the number of blocks of 32 rows that will be needed
    int numBlocks = numRows / 32;
    if (numRows - numBlocks * 32 != 0)
    {
      numBlocks++;
    }

    int indexPos = outputFile.getPos();
   
    // Write the index record out now in order to serve as a place holder
    // The bof passed in is the bof of the workbook, not this sheet
    IndexRecord indexRecord = new IndexRecord(0, numRows, numBlocks);
    outputFile.write(indexRecord);

    if (settings.getAutomaticFormulaCalculation())
    {
      CalcModeRecord cmr = new CalcModeRecord(CalcModeRecord.automatic);
      outputFile.write(cmr);
    }
    else
    {
      CalcModeRecord cmr = new CalcModeRecord(CalcModeRecord.manual);
      outputFile.write(cmr);
    }

    CalcCountRecord ccr = new CalcCountRecord(0x64);
    outputFile.write(ccr);

    RefModeRecord rmr = new RefModeRecord();
    outputFile.write(rmr);
    
    IterationRecord itr = new IterationRecord(false);
    outputFile.write(itr);

    DeltaRecord dtr = new DeltaRecord(0.001);
    outputFile.write(dtr);

    SaveRecalcRecord srr = new SaveRecalcRecord
      (settings.getRecalculateFormulasBeforeSave());
    outputFile.write(srr);  

    PrintHeadersRecord phr = new PrintHeadersRecord
      (settings.getPrintHeaders());
    outputFile.write(phr);

    PrintGridLinesRecord pglr = new PrintGridLinesRecord
      (settings.getPrintGridLines());
    outputFile.write(pglr);

    GridSetRecord gsr = new GridSetRecord(true);
    outputFile.write(gsr);

    GuttersRecord gutr = new GuttersRecord();
    outputFile.write(gutr);

    DefaultRowHeightRecord drhr = new DefaultRowHeightRecord
     (settings.getDefaultRowHeight(), 
      settings.getDefaultRowHeight() != 
                SheetSettings.DEFAULT_DEFAULT_ROW_HEIGHT);
    outputFile.write(drhr);

    workspaceOptions.setFitToPages(settings.getFitToPages());
    outputFile.write(workspaceOptions);

    if (rowBreaks.size() > 0)
    {
      int[] rb = new int[rowBreaks.size()];

      for (int i = 0; i < rb.length; i++)
      {
        rb[i] = ( (Integer) rowBreaks.get(i)).intValue();
      }

      HorizontalPageBreaksRecord hpbr = new HorizontalPageBreaksRecord(rb);
      outputFile.write(hpbr);
    }

    if (columnBreaks.size() > 0)
    {
      int[] rb = new int[columnBreaks.size()];

      for (int i = 0; i < rb.length; i++)
      {
        rb[i] = ( (Integer) columnBreaks.get(i)).intValue();
      }

      VerticalPageBreaksRecord hpbr = new VerticalPageBreaksRecord(rb);
      outputFile.write(hpbr);
    }

    HeaderRecord header = new HeaderRecord(settings.getHeader().toString());
    outputFile.write(header);

    FooterRecord footer = new FooterRecord(settings.getFooter().toString());
    outputFile.write(footer);

    HorizontalCentreRecord hcr = new HorizontalCentreRecord
      (settings.isHorizontalCentre());
    outputFile.write(hcr);

    VerticalCentreRecord vcr = new VerticalCentreRecord
      (settings.isVerticalCentre());
    outputFile.write(vcr);

    // Write out the margins if they don't equal the default
    if (settings.getLeftMargin() != settings.getDefaultWidthMargin())
    {
      MarginRecord mr = new LeftMarginRecord(settings.getLeftMargin());
      outputFile.write(mr);
    }

    if (settings.getRightMargin() != settings.getDefaultWidthMargin())
    {
      MarginRecord mr = new RightMarginRecord(settings.getRightMargin());
      outputFile.write(mr);
    }

    if (settings.getTopMargin() != settings.getDefaultHeightMargin())
    {
      MarginRecord mr = new TopMarginRecord(settings.getTopMargin());
      outputFile.write(mr);
    }

    if (settings.getBottomMargin() != settings.getDefaultHeightMargin())
    {
      MarginRecord mr = new BottomMarginRecord(settings.getBottomMargin());
      outputFile.write(mr);
    }

    if (plsRecord != null)
    {
      outputFile.write(plsRecord);
    }

    SetupRecord setup = new SetupRecord(settings);
    outputFile.write(setup);

    if (settings.isProtected())
    {
      ProtectRecord pr = new ProtectRecord(settings.isProtected());
      outputFile.write(pr);

      ScenarioProtectRecord spr = new ScenarioProtectRecord
        (settings.isProtected());
      outputFile.write(spr);

      ObjectProtectRecord opr = new ObjectProtectRecord
        (settings.isProtected());
      outputFile.write(opr);

      if (settings.getPassword() != null)
      {
        PasswordRecord pw = new PasswordRecord(settings.getPassword());
        outputFile.write(pw);
      }
      else if (settings.getPasswordHash() != 0)
      {
        PasswordRecord pw = new PasswordRecord(settings.getPasswordHash());
        outputFile.write(pw);
      }
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产成人porn| 日本韩国欧美三级| 欧美日韩国产首页在线观看| 久久网这里都是精品| 亚洲黄网站在线观看| 国产精一区二区三区| 欧美三级视频在线观看| 国产精品久久久久三级| 另类人妖一区二区av| 欧美视频一区二区三区在线观看| 久久久99精品久久| 九色|91porny| 欧美精选在线播放| 一区二区三区中文在线观看| 成人影视亚洲图片在线| 日韩美女一区二区三区| 一区二区国产盗摄色噜噜| 不卡一区二区三区四区| 国产人成一区二区三区影院| 免费三级欧美电影| 日韩视频123| 日本免费新一区视频| 欧美人妖巨大在线| 午夜久久久影院| 欧美久久久久久久久中文字幕| 亚洲女性喷水在线观看一区| 9l国产精品久久久久麻豆| 国产视频一区在线观看| 国产精品亚洲一区二区三区在线| 欧美电影精品一区二区| 久久精品国产秦先生| 日韩视频免费观看高清完整版 | 亚洲欧洲制服丝袜| 成人免费视频视频在线观看免费| 久久久不卡网国产精品一区| 国产一区二区免费看| 欧美韩国日本不卡| 91丨九色丨黑人外教| 一区二区三区四区在线播放| 欧美性大战久久久久久久| 亚洲成人午夜影院| 日韩免费一区二区| 国产精品一区二区在线观看网站| 久久久久国产精品厨房| 成人激情视频网站| 一区二区三区四区蜜桃 | 亚洲尤物视频在线| 91精品国产91久久久久久一区二区| 日韩精品亚洲专区| 久久这里只有精品首页| 91性感美女视频| 亚洲成av人综合在线观看| 日韩欧美激情一区| 成人黄色小视频在线观看| 亚洲精品欧美在线| 日韩精品一区二区三区视频| 成人毛片老司机大片| 亚洲一二三区不卡| 久久综合九色综合欧美就去吻| 成人开心网精品视频| 性做久久久久久久免费看| 久久综合色婷婷| 91在线看国产| 国产综合久久久久久鬼色| 亚洲天天做日日做天天谢日日欢| 7777精品伊人久久久大香线蕉最新版| 狠狠色丁香久久婷婷综合丁香| 国产精品久线观看视频| 欧美一二三区精品| a4yy欧美一区二区三区| 久久精品国产网站| 亚洲一区二区三区免费视频| 久久精品视频在线免费观看| 在线视频一区二区三区| 国产凹凸在线观看一区二区| 亚洲国产精品一区二区久久 | 欧美日韩国产不卡| 国产精华液一区二区三区| 视频在线观看91| 亚洲情趣在线观看| 中文字幕欧美激情一区| 日韩三级视频中文字幕| 欧美主播一区二区三区| 成人免费看片app下载| 日本视频免费一区| 亚洲乱码中文字幕| 中文字幕av一区 二区| 日韩欧美一二区| 欧美精选一区二区| 日本高清不卡在线观看| 丁香桃色午夜亚洲一区二区三区| 五月天视频一区| 欧美国产日韩精品免费观看| 精品国产乱码久久久久久久久| 欧美性色欧美a在线播放| av不卡免费电影| 国产高清在线精品| 国产在线播放一区三区四| 午夜婷婷国产麻豆精品| 亚洲精品日日夜夜| 国产精品理伦片| 国产精品无遮挡| 久久色.com| 精品国产免费视频| 日韩欧美中文一区| 日韩精品影音先锋| 日韩欧美国产成人一区二区| 日韩丝袜美女视频| 日韩精品一区在线观看| 精品欧美一区二区三区精品久久| 91精品国产色综合久久不卡蜜臀 | 欧美国产成人在线| 久久久99精品久久| 26uuu国产一区二区三区| 日韩一区二区电影在线| 日韩午夜在线影院| 欧美电视剧在线观看完整版| 精品国产乱码久久久久久久久| 日韩欧美一区中文| 精品美女被调教视频大全网站| 日韩欧美自拍偷拍| 2023国产精品| 中文字幕一区二区三区四区不卡| 国产精品久久国产精麻豆99网站| 亚洲视频综合在线| 亚洲高清一区二区三区| 免费亚洲电影在线| 国产高清在线观看免费不卡| 99久久综合色| 在线亚洲高清视频| 天堂va蜜桃一区二区三区| 美女网站色91| 福利电影一区二区| 一本色道久久综合精品竹菊| 在线播放一区二区三区| 精品国产一区二区三区av性色| 国产亚洲精品资源在线26u| 中文字幕日韩一区二区| 亚洲一区视频在线观看视频| 日韩vs国产vs欧美| 国产老肥熟一区二区三区| 99热国产精品| 日韩视频一区二区三区| 国产精品理伦片| 视频在线观看一区| 成人中文字幕电影| 欧美电影影音先锋| 日本一区二区免费在线| 亚洲欧美欧美一区二区三区| 日本亚洲视频在线| 成人精品一区二区三区中文字幕 | 日韩精品免费视频人成| 国产一区二区三区精品视频| 一本久久a久久精品亚洲| 日韩欧美成人激情| 一区二区三区四区不卡视频| 久久91精品久久久久久秒播| jiyouzz国产精品久久| 欧美日韩视频在线第一区| 国产欧美日韩三级| 视频一区视频二区中文| 99久久精品国产毛片| 日韩精品一区二区三区swag| 一区二区在线免费观看| 国产一区二区精品久久99| 欧美午夜精品久久久久久超碰| 久久亚洲欧美国产精品乐播 | 一区二区三区小说| 国产v综合v亚洲欧| 日韩你懂的在线观看| 亚洲国产日韩a在线播放| 不卡影院免费观看| 久久久久青草大香线综合精品| 亚洲国产精品一区二区久久恐怖片| 国产 欧美在线| 26uuu欧美日本| 日韩二区三区四区| 日本韩国精品在线| 亚洲色图一区二区| 成人av集中营| 国产性天天综合网| 久草精品在线观看| 日韩欧美不卡一区| 日韩专区一卡二卡| 在线国产电影不卡| 亚洲欧美色图小说| 99久久精品免费观看| 欧美国产1区2区| 国产成人精品免费在线| 久久久久久夜精品精品免费| 麻豆高清免费国产一区| 日韩欧美一级二级三级久久久| 丝袜美腿亚洲一区| 欧美性xxxxxxxx| 亚洲夂夂婷婷色拍ww47 | 五月婷婷综合激情| 欧美日韩一区二区不卡| 婷婷综合在线观看| 欧美一区二区三区免费大片| 日本不卡视频在线观看|