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

📄 sheetreader.java

📁 JAVA读取excel表格里的数据,与jdbc功能相当,是一个包
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
      {        if (sharedFormula == null)        {          logger.warn("Shared template formula is null - " +                      "trying most recent formula template");          SharedFormulaRecord lastSharedFormula =            (SharedFormulaRecord) sharedFormulas.get(sharedFormulas.size() - 1);          if (lastSharedFormula != null)          {            sharedFormula = lastSharedFormula.getTemplateFormula();          }        }        SharedFormulaRecord sfr = new SharedFormulaRecord          (r, sharedFormula, workbook, workbook, sheet);        sharedFormulas.add(sfr);        sharedFormula = null;      }      else if (type == Type.FORMULA || type == Type.FORMULA2)      {        FormulaRecord fr = new FormulaRecord(r,                                             excelFile,                                             formattingRecords,                                             workbook,                                             workbook,                                             sheet,                                             workbookSettings);        if (fr.isShared())        {          BaseSharedFormulaRecord prevSharedFormula = sharedFormula;          sharedFormula = (BaseSharedFormulaRecord) fr.getFormula();          // See if it fits in any of the shared formulas          sharedFormulaAdded = addToSharedFormulas(sharedFormula);          if (sharedFormulaAdded)          {            sharedFormula = prevSharedFormula;          }          // If we still haven't added the previous base shared formula,          // revert it to an ordinary formula and add it to the cell          if (!sharedFormulaAdded && prevSharedFormula != null)          {            // Do nothing.  It's possible for the biff file to contain the            // record sequence            // FORMULA-SHRFMLA-FORMULA-SHRFMLA-FORMULA-FORMULA-FORMULA            // ie. it first lists all the formula templates, then it            // lists all the individual formulas            addCell(revertSharedFormula(prevSharedFormula));          }        }        else        {          Cell cell = fr.getFormula();          try          {            // See if the formula evaluates to date            if (fr.getFormula().getType() == CellType.NUMBER_FORMULA)            {              NumberFormulaRecord nfr = (NumberFormulaRecord) fr.getFormula();              if (formattingRecords.isDate(nfr.getXFIndex()))              {                cell = new DateFormulaRecord(nfr,                                             formattingRecords,                                             workbook,                                             workbook,                                             nineteenFour,                                             sheet);              }            }                        addCell(cell);          }          catch (FormulaException e)          {            // Something has gone wrong trying to read the formula data eg. it            // might be unsupported biff7 data            logger.warn              (CellReferenceHelper.getCellReference               (cell.getColumn(), cell.getRow()) + " " + e.getMessage());          }        }      }      else if (type == Type.LABEL)      {        LabelRecord lr = null;        if (workbookBof.isBiff8())        {          lr = new LabelRecord(r, formattingRecords, sheet, workbookSettings);        }        else        {          lr = new LabelRecord(r, formattingRecords, sheet, workbookSettings,                               LabelRecord.biff7);        }        addCell(lr);      }      else if (type == Type.RSTRING)      {        RStringRecord lr = null;        // RString records are obsolete in biff 8        Assert.verify(!workbookBof.isBiff8());        lr = new RStringRecord(r, formattingRecords,                               sheet, workbookSettings,                               RStringRecord.biff7);        addCell(lr);      }      else if (type == Type.NAME)      {        ;      }      else if (type == Type.PASSWORD)      {        PasswordRecord pr = new PasswordRecord(r);        settings.setPasswordHash(pr.getPasswordHash());      }      else if (type == Type.ROW)      {        RowRecord rr = new RowRecord(r);        // See if the row has anything funny about it        if (!rr.isDefaultHeight() ||            !rr.matchesDefaultFontHeight() ||            rr.isCollapsed() ||            rr.hasDefaultFormat())        {          rowProperties.add(rr);        }      }      else if (type == Type.BLANK)      {        if (!workbookSettings.getIgnoreBlanks())        {          BlankCell bc = new BlankCell(r, formattingRecords, sheet);          addCell(bc);        }      }      else if (type == Type.MULBLANK)      {        if (!workbookSettings.getIgnoreBlanks())        {          MulBlankRecord mulblank = new MulBlankRecord(r);          // Get the individual cell records from the multiple record          int num = mulblank.getNumberOfColumns();          for (int i = 0; i < num; i++)          {            int ixf = mulblank.getXFIndex(i);            MulBlankCell mbc = new MulBlankCell              (mulblank.getRow(),               mulblank.getFirstColumn() + i,               ixf,               formattingRecords,               sheet);                        addCell(mbc);          }        }      }      else if (type == Type.SCL)      {        SCLRecord scl = new SCLRecord(r);        settings.setZoomFactor(scl.getZoomFactor());      }      else if (type == Type.COLINFO)      {        ColumnInfoRecord cir = new ColumnInfoRecord(r);        columnInfosArray.add(cir);      }      else if (type == Type.HEADER)      {        HeaderRecord hr = null;        if (workbookBof.isBiff8())        {          hr = new HeaderRecord(r, workbookSettings);        }        else        {          hr = new HeaderRecord(r, workbookSettings, HeaderRecord.biff7);        }        HeaderFooter header = new HeaderFooter(hr.getHeader());        settings.setHeader(header);      }      else if (type == Type.FOOTER)      {        FooterRecord fr = null;        if (workbookBof.isBiff8())        {          fr = new FooterRecord(r, workbookSettings);        }        else        {          fr = new FooterRecord(r, workbookSettings, FooterRecord.biff7);        }        HeaderFooter footer = new HeaderFooter(fr.getFooter());        settings.setFooter(footer);      }      else if (type == Type.SETUP)      {        SetupRecord sr = new SetupRecord(r);        if (sr.isPortrait())        {          settings.setOrientation(PageOrientation.PORTRAIT);        }        else        {          settings.setOrientation(PageOrientation.LANDSCAPE);        }        settings.setPaperSize(PaperSize.getPaperSize(sr.getPaperSize()));        settings.setHeaderMargin(sr.getHeaderMargin());        settings.setFooterMargin(sr.getFooterMargin());        settings.setScaleFactor(sr.getScaleFactor());        settings.setPageStart(sr.getPageStart());        settings.setFitWidth(sr.getFitWidth());        settings.setFitHeight(sr.getFitHeight());        settings.setHorizontalPrintResolution          (sr.getHorizontalPrintResolution());        settings.setVerticalPrintResolution(sr.getVerticalPrintResolution());        settings.setCopies(sr.getCopies());        if (workspaceOptions != null)        {          settings.setFitToPages(workspaceOptions.getFitToPages());        }      }      else if (type == Type.WSBOOL)      {        workspaceOptions = new WorkspaceInformationRecord(r);      }      else if (type == Type.DEFCOLWIDTH)      {        DefaultColumnWidthRecord dcwr = new DefaultColumnWidthRecord(r);        settings.setDefaultColumnWidth(dcwr.getWidth());      }      else if (type == Type.DEFAULTROWHEIGHT)      {        DefaultRowHeightRecord drhr = new DefaultRowHeightRecord(r);        if (drhr.getHeight() != 0)        {          settings.setDefaultRowHeight(drhr.getHeight());        }      }      else if (type == Type.LEFTMARGIN)      {        MarginRecord m = new LeftMarginRecord(r);        settings.setLeftMargin(m.getMargin());      }      else if (type == Type.RIGHTMARGIN)      {        MarginRecord m = new RightMarginRecord(r);        settings.setRightMargin(m.getMargin());      }      else if (type == Type.TOPMARGIN)      {        MarginRecord m = new TopMarginRecord(r);        settings.setTopMargin(m.getMargin());      }      else if (type == Type.BOTTOMMARGIN)      {        MarginRecord m = new BottomMarginRecord(r);        settings.setBottomMargin(m.getMargin());      }      else if (type == Type.HORIZONTALPAGEBREAKS)      {        HorizontalPageBreaksRecord dr = null;        if (workbookBof.isBiff8())        {          dr = new HorizontalPageBreaksRecord(r);        }        else        {          dr = new HorizontalPageBreaksRecord            (r, HorizontalPageBreaksRecord.biff7);        }        rowBreaks = dr.getRowBreaks();      }      else if (type == Type.VERTICALPAGEBREAKS)      {        VerticalPageBreaksRecord dr = null;        if (workbookBof.isBiff8())        {          dr = new VerticalPageBreaksRecord(r);        }        else        {          dr = new VerticalPageBreaksRecord            (r, VerticalPageBreaksRecord.biff7);        }        columnBreaks = dr.getColumnBreaks();      }      else if (type == Type.PLS)      {        plsRecord = new PLSRecord(r);      }      else if (type == Type.DVAL)      {        if (!workbookSettings.getCellValidationDisabled())        {          DataValidityListRecord dvlr = new DataValidityListRecord(r);          if (dvlr.getObjectId() == -1)          {            if (msoRecord != null && objRecord == null)            {              // there is a drop down associated with this data validation              if (drawingData == null)              {                drawingData = new DrawingData();              }              Drawing2 d2 = new Drawing2(msoRecord, drawingData,                                          workbook.getDrawingGroup());              drawings.add(d2);              msoRecord = null;              dataValidation = new DataValidation(dvlr);            }            else            {              // no drop down              dataValidation = new DataValidation(dvlr);            }          }          else if (objectIds.contains(new Integer(dvlr.getObjectId())))          {            dataValidation = new DataValidation(dvlr);          }          else          {            logger.warn("object id " + dvlr.getObjectId() + " referenced " +                        " by data validity list record not found - ignoring");          }        }      }      else if (type == Type.HCENTER)      {      	CentreRecord hr = new CentreRecord(r);      	settings.setHorizontalCentre(hr.isCentre());      }       else if (type == Type.VCENTER)      {      	CentreRecord vc = new CentreRecord(r);      	settings.setVerticalCentre(vc.isCentre());      }      else if (type == Type.DV)      {        if (!workbookSettings.getCellValidationDisabled())        {          DataValiditySettingsRecord dvsr =             new DataValiditySettingsRecord(r,                                            workbook,                                            workbook,                                           workbook.getSettings());          if (dataValidation != null)          {            dataValidation.add(dvsr);            addCellValidation(dvsr.getFirstColumn(),                              dvsr.getFirstRow(),                              dvsr.getLastColumn(),                              dvsr.getLastRow(),                               dvsr);          }          else          {            logger.warn("cannot add data validity settings");          }        }      }      else if (type == Type.OBJ)      {        objRecord = new ObjRecord(r);        if (!workbookSettings.getDrawingsDisabled())        {          handleObjectRecord(objRecord, msoRecord, comments);          objectIds.add(new Integer(objRecord.getObjectId()));        }        // Save chart handling until the chart BOF record appears        if (objRecord.getType() != ObjRecord.CHART)        {          objRecord = null;          msoRecord = null;        }      }      else if (type == Type.MSODRAWING)      {        if (!workbookSettings.getDrawingsDisabled())        {          if (msoRecord != null)          {            // For form controls, a rogue MSODRAWING record can crop up            // after the main one.  Add these into the drawing data            drawingData.addRawData(msoRecord.getData());          }          msoRecord = new MsoDrawingRecord(r);          if (firstMsoRecord)          {            msoRecord.setFirst();            firstMsoRecord = false;          }        }      }      else if (type == Type.BUTTONPROPERTYSET)      {        buttonPropertySet = new ButtonPropertySetRecord(r);      }      else if (type == Type.CALCMODE)      {        CalcModeRecord cmr = new CalcModeRecord(r);        settings.setAutomaticFormulaCalculation(cmr.isAutomatic());      }      else if (type == Type.SAVERECALC)      {        SaveRecalcRecord cmr = new SaveRecalcRecord(r);        settings.setRecalculateFormulasBeforeSave(cmr.getRecalculateOnSave());      }      else if (type == Type.BOF)      {        BOFRecord br = new BOFRecord(r);        Assert.verify(!br.isWorksheet());        int startpos = excelFile.getPos() - r.getLength() - 4;        // Skip to the end of the nested bof        // Thanks to Rohit for spotting this        Record r2 = excelFile.next();        while (r2.getCode() != Type.EOF.value)        {          r2 = excelFile.next();        }        if (br.isChart())        {          if (!workbook.getWorkbookBof().isBiff8())          {            logger.warn("only biff8 charts are supported");          }          else          {            if (drawingData == null)            {              drawingData = new DrawingData();            }                      if (!workbookSettings.getDrawingsDisabled())            {              Chart chart = new Chart(msoRecord, objRecord, drawingData,                                      startpos, excelFile.getPos(),                                      excelFile, workbookSettings);              charts.add(chart);              if (workbook.getDrawingGroup() != null)              {                workbook.getDrawingGroup().add(chart);              }            }          }          // Reset the drawing records          msoRecord = null;          objRecord = null;        }        // If this worksheet is just a chart, then the EOF reached        // represents the end of the sheet as well as the end of the chart        if (sheetBof.isChart())        {          cont = false;        }      }      else if (type == Type.EOF)      {        cont = false;      }    }    // Restore the file to its accurate position    excelFile.restorePos();    // Add any out of bounds cells    if (outOfBoundsCells.size() > 0)    {      handleOutOfBoundsCells();    }    // Add all the shared formulas to the sheet as individual formulas    Iterator i = sharedFormulas.iterator();    while (i.hasNext())    {      SharedFormulaRecord sfr = (SharedFormulaRecord) i.next();      Cell[] sfnr = sfr.getFormulas(formattingRecords, nineteenFour);      for (int sf = 0; sf < sfnr.length; sf++)      {        addCell(sfnr[sf]);      }    }    // If the last base shared formula wasn't added to the sheet, then    // revert it to an ordinary formula and add it    if (!sharedFormulaAdded && sharedFormula != null)    {      addCell(revertSharedFormula(sharedFormula));    }    // If there is a stray msoDrawing record, then flag to the drawing group    // that one has been omitted    if (msoRecord != null && workbook.getDrawingGroup() != null)    {      workbook.getDrawingGroup().setDrawingsOmitted(msoRecord, objRecord);    }          // Check that the comments hash is empty    if (!comments.isEmpty())    {      logger.warn("Not all comments have a corresponding Note record");    }  }  /**   * Sees if the shared formula belongs to any of the shared formula   * groups   *   * @param fr the candidate shared formula   * @return TRUE if the formula was added, FALSE otherwise   */  private boolean addToSharedFormulas(BaseSharedFormulaRecord fr)  {    boolean added = false;    SharedFormulaRecord sfr = null;    for (int i=0, size=sharedFormulas.size(); i<size && !added; ++i)     {      sfr = (SharedFormulaRecord ) sharedFormulas.get(i);      added = sfr.add(fr);    }    return added;  }  /**   * Reverts the shared formula passed in to an ordinary formula and adds   * it to the list   *

⌨️ 快捷键说明

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