📄 sheetreader.java
字号:
catch(FormulaException e)
{
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;
Assert.verify(!workbookBof.isBiff8());
lr = new RStringRecord(r, formattingRecords, sheet, workbookSettings, RStringRecord.biff7);
addCell(lr);
} else
if(type != Type.NAME)
if(type == Type.PASSWORD)
{
PasswordRecord pr = new PasswordRecord(r);
settings.setPasswordHash(pr.getPasswordHash());
} else
if(type == Type.ROW)
{
RowRecord rr = new RowRecord(r);
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);
int num = mulblank.getNumberOfColumns();
int i = 0;
while(i < num)
{
int ixf = mulblank.getXFIndex(i);
MulBlankCell mbc = new MulBlankCell(mulblank.getRow(), mulblank.getFirstColumn() + i, ixf, formattingRecords, sheet);
addCell(mbc);
i++;
}
}
} 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)
{
if(drawingData == null)
drawingData = new DrawingData();
Drawing2 d2 = new Drawing2(msoRecord, drawingData, workbook.getDrawingGroup());
drawings.add(d2);
msoRecord = null;
dataValidation = new DataValidation(dvlr);
} else
{
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()));
}
if(objRecord.getType() != ObjRecord.CHART)
{
objRecord = null;
msoRecord = null;
}
} else
if(type == Type.MSODRAWING)
{
if(!workbookSettings.getDrawingsDisabled())
{
if(msoRecord != null)
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;
for(Record r2 = excelFile.next(); 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);
}
}
msoRecord = null;
objRecord = null;
}
if(sheetBof.isChart())
cont = false;
} else
if(type == Type.EOF)
cont = false;
} while(true);
excelFile.restorePos();
if(outOfBoundsCells.size() > 0)
handleOutOfBoundsCells();
for(Iterator i = sharedFormulas.iterator(); i.hasNext();)
{
SharedFormulaRecord sfr = (SharedFormulaRecord)i.next();
Cell sfnr[] = sfr.getFormulas(formattingRecords, nineteenFour);
int sf = 0;
while(sf < sfnr.length)
{
addCell(sfnr[sf]);
sf++;
}
}
if(!sharedFormulaAdded && sharedFormula != null)
addCell(revertSharedFormula(sharedFormula));
if(msoRecord != null && workbook.getDrawingGroup() != null)
workbook.getDrawingGroup().setDrawingsOmitted(msoRecord, objRecord);
if(!comments.isEmpty())
logger.warn("Not all comments have a corresponding Note record");
}
private boolean addToSharedFormulas(BaseSharedFormulaRecord fr)
{
boolean added = false;
SharedFormulaRecord sfr = null;
int i = 0;
for(int size = sharedFormulas.size(); i < size && !added; i++)
{
sfr = (SharedFormulaRecord)sharedFormulas.get(i);
added = sfr.add(fr);
}
return added;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -