Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        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));
            }
        }
Ejemplo n.º 5
0
        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;
                }
            }
        }