public XlsWorksheet(XlsWorkbook workbook, XlsBiffBoundSheet refSheet, Stream stream) { Workbook = workbook; Stream = stream; IsDate1904 = workbook.IsDate1904; Formats = new Dictionary <ushort, XlsBiffFormatString>(workbook.Formats); ExtendedFormats = new List <XlsBiffRecord>(workbook.ExtendedFormats); Encoding = workbook.Encoding; RowMinMaxOffsets = new Dictionary <int, KeyValuePair <int, int> >(); DefaultRowHeight = 255; // 12.75 points Name = refSheet.GetSheetName(workbook.Encoding); DataOffset = refSheet.StartOffset; switch (refSheet.VisibleState) { case XlsBiffBoundSheet.SheetVisibility.Hidden: VisibleState = "hidden"; break; case XlsBiffBoundSheet.SheetVisibility.VeryHidden: VisibleState = "veryhidden"; break; default: VisibleState = "visible"; break; } ReadWorksheetGlobals(); }
public XlsWorksheet(XlsWorkbook workbook, XlsBiffBoundSheet refSheet, byte[] bytes) { Workbook = workbook; Bytes = bytes; IsDate1904 = workbook.IsDate1904; Formats = new Dictionary <ushort, XlsBiffFormatString>(workbook.Formats); ExtendedFormats = new List <XlsBiffRecord>(workbook.ExtendedFormats); Encoding = workbook.Encoding; Name = refSheet.GetSheetName(workbook.Encoding); DataOffset = refSheet.StartOffset; switch (refSheet.VisibleState) { case XlsBiffBoundSheet.SheetVisibility.Hidden: VisibleState = "hidden"; break; case XlsBiffBoundSheet.SheetVisibility.VeryHidden: VisibleState = "veryhidden"; break; default: VisibleState = "visible"; break; } ReadWorksheetGlobals(); }
public XlsWorksheet(XlsWorkbook workbook, XlsBiffBoundSheet refSheet, Stream stream) { Workbook = workbook; Stream = stream; IsDate1904 = workbook.IsDate1904; Encoding = workbook.Encoding; RowOffsetMap = new Dictionary <int, XlsRowOffset>(); DefaultRowHeight = 255; // 12.75 points Name = refSheet.GetSheetName(workbook.Encoding); DataOffset = refSheet.StartOffset; switch (refSheet.VisibleState) { case XlsBiffBoundSheet.SheetVisibility.Hidden: VisibleState = "hidden"; break; case XlsBiffBoundSheet.SheetVisibility.VeryHidden: VisibleState = "veryhidden"; break; default: VisibleState = "visible"; break; } ReadWorksheetGlobals(); }
private void ReadWorkbookGlobals(XlsBiffStream biffStream) { XlsBiffRecord rec; var biffFormats = new Dictionary <ushort, XlsBiffFormatString>(); while ((rec = biffStream.Read()) != null && rec.Id != BIFFRECORDTYPE.EOF) { switch (rec.Id) { case BIFFRECORDTYPE.INTERFACEHDR: InterfaceHdr = (XlsBiffInterfaceHdr)rec; break; case BIFFRECORDTYPE.BOUNDSHEET: XlsBiffBoundSheet sheet = (XlsBiffBoundSheet)rec; if (sheet.Type != XlsBiffBoundSheet.SheetType.Worksheet) { break; } Sheets.Add(sheet); break; case BIFFRECORDTYPE.MMS: Mms = rec; break; case BIFFRECORDTYPE.COUNTRY: Country = rec; break; case BIFFRECORDTYPE.CODEPAGE: // [MS-XLS 2.4.52 CodePage] An unsigned integer that specifies the workbook’s code page.The value MUST be one // of the code page values specified in [CODEPG] or the special value 1200, which means that the // workbook is Unicode. CodePage = (XlsBiffSimpleValueRecord)rec; Encoding = EncodingHelper.GetEncoding(CodePage.Value); break; case BIFFRECORDTYPE.FONT: case BIFFRECORDTYPE.FONT_V34: Fonts.Add(rec); break; case BIFFRECORDTYPE.FORMAT_V23: { var fmt = (XlsBiffFormatString)rec; biffFormats.Add((ushort)biffFormats.Count, fmt); } break; case BIFFRECORDTYPE.FORMAT: { var fmt = (XlsBiffFormatString)rec; biffFormats.Add(fmt.Index, fmt); } break; case BIFFRECORDTYPE.XF: case BIFFRECORDTYPE.XF_V4: case BIFFRECORDTYPE.XF_V3: case BIFFRECORDTYPE.XF_V2: ExtendedFormats.Add((XlsBiffXF)rec); break; case BIFFRECORDTYPE.SST: SST = (XlsBiffSST)rec; SST.ReadStrings(biffStream); break; case BIFFRECORDTYPE.CONTINUE: break; case BIFFRECORDTYPE.EXTSST: ExtSST = rec; break; case BIFFRECORDTYPE.PASSWORD: break; case BIFFRECORDTYPE.PROTECT: case BIFFRECORDTYPE.PROT4REVPASSWORD: // IsProtected break; case BIFFRECORDTYPE.RECORD1904: IsDate1904 = ((XlsBiffSimpleValueRecord)rec).Value == 1; break; default: break; } } foreach (var biffFormat in biffFormats) { var formatString = biffFormat.Value.GetValue(Encoding); Formats.Add(biffFormat.Key, new NumberFormatString(formatString)); } }
private void ReadWorkbookGlobals(XlsBiffStream biffStream) { bool sst = false; XlsBiffRecord rec; while ((rec = biffStream.Read()) != null) { switch (rec.Id) { case BIFFRECORDTYPE.INTERFACEHDR: InterfaceHdr = (XlsBiffInterfaceHdr)rec; break; case BIFFRECORDTYPE.BOUNDSHEET: XlsBiffBoundSheet sheet = (XlsBiffBoundSheet)rec; if (sheet.Type != XlsBiffBoundSheet.SheetType.Worksheet) { break; } Sheets.Add(sheet); break; case BIFFRECORDTYPE.MMS: Mms = rec; break; case BIFFRECORDTYPE.COUNTRY: Country = rec; break; case BIFFRECORDTYPE.CODEPAGE: // [MS-XLS 2.4.52 CodePage] An unsigned integer that specifies the workbook’s code page.The value MUST be one // of the code page values specified in [CODEPG] or the special value 1200, which means that the // workbook is Unicode. CodePage = (XlsBiffSimpleValueRecord)rec; Encoding = EncodingHelper.GetEncoding(CodePage.Value); break; case BIFFRECORDTYPE.FONT: case BIFFRECORDTYPE.FONT_V34: Fonts.Add(rec); break; case BIFFRECORDTYPE.FORMAT_V23: { var fmt = (XlsBiffFormatString)rec; Formats.Add((ushort)Formats.Count, fmt); } break; case BIFFRECORDTYPE.FORMAT: { var fmt = (XlsBiffFormatString)rec; Formats.Add(fmt.Index, fmt); } break; case BIFFRECORDTYPE.XF: case BIFFRECORDTYPE.XF_V4: case BIFFRECORDTYPE.XF_V3: case BIFFRECORDTYPE.XF_V2: ExtendedFormats.Add(rec); break; case BIFFRECORDTYPE.SST: SST = (XlsBiffSST)rec; sst = true; break; case BIFFRECORDTYPE.CONTINUE: if (!sst) { break; } XlsBiffContinue contSST = (XlsBiffContinue)rec; SST.Append(contSST); break; case BIFFRECORDTYPE.EXTSST: ExtSST = rec; sst = false; break; case BIFFRECORDTYPE.PASSWORD: break; case BIFFRECORDTYPE.PROTECT: case BIFFRECORDTYPE.PROT4REVPASSWORD: // IsProtected break; case BIFFRECORDTYPE.RECORD1904: IsDate1904 = ((XlsBiffSimpleValueRecord)rec).Value == 1; break; case BIFFRECORDTYPE.EOF: SST?.ReadStrings(); return; default: continue; } } }