LCOV - code coverage report
Current view: top level - sc/source/filter/excel - read.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 206 702 29.3 %
Date: 2012-08-25 Functions: 3 4 75.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 293 1546 19.0 %

           Branch data     Line data    Source code
       1                 :            : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2                 :            : /*************************************************************************
       3                 :            :  *
       4                 :            :  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       5                 :            :  *
       6                 :            :  * Copyright 2000, 2010 Oracle and/or its affiliates.
       7                 :            :  *
       8                 :            :  * OpenOffice.org - a multi-platform office productivity suite
       9                 :            :  *
      10                 :            :  * This file is part of OpenOffice.org.
      11                 :            :  *
      12                 :            :  * OpenOffice.org is free software: you can redistribute it and/or modify
      13                 :            :  * it under the terms of the GNU Lesser General Public License version 3
      14                 :            :  * only, as published by the Free Software Foundation.
      15                 :            :  *
      16                 :            :  * OpenOffice.org is distributed in the hope that it will be useful,
      17                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      18                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      19                 :            :  * GNU Lesser General Public License version 3 for more details
      20                 :            :  * (a copy is included in the LICENSE file that accompanied this code).
      21                 :            :  *
      22                 :            :  * You should have received a copy of the GNU Lesser General Public License
      23                 :            :  * version 3 along with OpenOffice.org.  If not, see
      24                 :            :  * <http://www.openoffice.org/license.html>
      25                 :            :  * for a copy of the LGPLv3 License.
      26                 :            :  *
      27                 :            :  ************************************************************************/
      28                 :            : 
      29                 :            : #include <stdlib.h>
      30                 :            : #include <stdio.h>
      31                 :            : 
      32                 :            : #include "document.hxx"
      33                 :            : #include "scerrors.hxx"
      34                 :            : #include "fprogressbar.hxx"
      35                 :            : #include "xltracer.hxx"
      36                 :            : #include "xltable.hxx"
      37                 :            : #include "xihelper.hxx"
      38                 :            : #include "xipage.hxx"
      39                 :            : #include "xiview.hxx"
      40                 :            : #include "xilink.hxx"
      41                 :            : #include "xiname.hxx"
      42                 :            : #include "xicontent.hxx"
      43                 :            : #include "xiescher.hxx"
      44                 :            : #include "xipivot.hxx"
      45                 :            : #include "XclImpChangeTrack.hxx"
      46                 :            : 
      47                 :            : #include "root.hxx"
      48                 :            : #include "imp_op.hxx"
      49                 :            : #include "excimp8.hxx"
      50                 :            : 
      51                 :          0 : FltError ImportExcel::Read( void )
      52                 :            : {
      53         [ #  # ]:          0 :     XclImpPageSettings&     rPageSett       = GetPageSettings();
      54         [ #  # ]:          0 :     XclImpTabViewSettings&  rTabViewSett    = GetTabViewSettings();
      55         [ #  # ]:          0 :     XclImpPalette&          rPal            = GetPalette();
      56         [ #  # ]:          0 :     XclImpFontBuffer&       rFontBfr        = GetFontBuffer();
      57         [ #  # ]:          0 :     XclImpNumFmtBuffer&     rNumFmtBfr      = GetNumFmtBuffer();
      58         [ #  # ]:          0 :     XclImpXFBuffer&         rXFBfr          = GetXFBuffer();
      59         [ #  # ]:          0 :     XclImpNameManager&      rNameMgr        = GetNameManager();
      60         [ #  # ]:          0 :     XclImpObjectManager&    rObjMgr         = GetObjectManager();
      61                 :            :     (void)rObjMgr;
      62                 :            :     // call to GetCurrSheetDrawing() cannot be cached (changes in new sheets)
      63                 :            : 
      64                 :            :     enum Zustand {
      65                 :            :         Z_BiffNull, // Nicht in gueltigem Biff-Format
      66                 :            :         Z_Biff2,    // Biff2: nur eine Tabelle
      67                 :            : 
      68                 :            :         Z_Biff3,    // Biff3: nur eine Tabelle
      69                 :            : 
      70                 :            :         Z_Biff4,    // Biff4: nur eine Tabelle
      71                 :            :         Z_Biff4W,   // Biff4 Workbook: Globals
      72                 :            :         Z_Biff4T,   // Biff4 Workbook: eine Tabelle selbst
      73                 :            :         Z_Biff4E,   // Biff4 Workbook: zwischen den Tabellen
      74                 :            : 
      75                 :            :         Z_Biff5WPre,// Biff5: Prefetch Workbook
      76                 :            :         Z_Biff5W,   // Biff5: Globals
      77                 :            :         Z_Biff5TPre,// Biff5: Prefetch fuer Shrfmla/Array Formula
      78                 :            :         Z_Biff5T,   // Biff5: eine Tabelle selbst
      79                 :            :         Z_Biff5E,   // Biff5: zwischen den Tabellen
      80                 :            :         Z_Biffn0,   // Alle Biffs: Tabelle bis naechstesss EOF ueberlesen
      81                 :            :         Z_Ende };
      82                 :            : 
      83                 :          0 :     Zustand             eAkt = Z_BiffNull, ePrev = Z_BiffNull;
      84                 :            : 
      85                 :          0 :     FltError        eLastErr = eERR_OK;
      86                 :            :     sal_uInt16      nOpcode;
      87                 :          0 :     sal_uInt16      nBofLevel = 0;
      88                 :            : 
      89                 :            :     OSL_ENSURE( &aIn != NULL, "-ImportExcel::Read(): Kein Stream - wie dass?!" );
      90                 :            : 
      91                 :            :     SAL_WNODEPRECATED_DECLARATIONS_PUSH
      92                 :            :     ::std::auto_ptr< ScfSimpleProgressBar > pProgress( new ScfSimpleProgressBar(
      93 [ #  # ][ #  # ]:          0 :         aIn.GetSvStreamSize(), GetDocShell(), STR_LOAD_DOC ) );
                 [ #  # ]
      94                 :            :     SAL_WNODEPRECATED_DECLARATIONS_POP
      95                 :            : 
      96                 :            :     /*  #i104057# Need to track a base position for progress bar calculation,
      97                 :            :         because sheet substreams may not be in order of sheets. */
      98                 :          0 :     sal_Size nProgressBasePos = 0;
      99                 :          0 :     sal_Size nProgressBaseSize = 0;
     100                 :            : 
     101         [ #  # ]:          0 :     while( eAkt != Z_Ende )
     102                 :            :     {
     103         [ #  # ]:          0 :         if( eAkt == Z_Biff5E )
     104                 :            :         {
     105                 :          0 :             sal_uInt16 nScTab = GetCurrScTab();
     106         [ #  # ]:          0 :             if( nScTab < maSheetOffsets.size()  )
     107                 :            :             {
     108                 :          0 :                 nProgressBaseSize += (aIn.GetSvStreamPos() - nProgressBasePos);
     109         [ #  # ]:          0 :                 nProgressBasePos = maSheetOffsets[ nScTab ];
     110         [ #  # ]:          0 :                 aIn.StartNextRecord( nProgressBasePos );
     111                 :            :             }
     112                 :            :             else
     113                 :          0 :                 eAkt = Z_Ende;
     114                 :            :         }
     115                 :            :         else
     116         [ #  # ]:          0 :             aIn.StartNextRecord();
     117                 :            : 
     118                 :          0 :         nOpcode = aIn.GetRecId();
     119                 :            : 
     120         [ #  # ]:          0 :         if( !aIn.IsValid() )
     121                 :            :         {
     122                 :            :             // finalize table if EOF is missing
     123         [ #  # ]:          0 :             switch( eAkt )
     124                 :            :             {
     125                 :            :                 case Z_Biff2:
     126                 :            :                 case Z_Biff3:
     127                 :            :                 case Z_Biff4:
     128                 :            :                 case Z_Biff4T:
     129                 :            :                 case Z_Biff5TPre:
     130                 :            :                 case Z_Biff5T:
     131         [ #  # ]:          0 :                     rNumFmtBfr.CreateScFormats();
     132         [ #  # ]:          0 :                     Eof();
     133                 :          0 :                 break;
     134                 :            :                 default:;
     135                 :            :             };
     136                 :          0 :             eAkt = Z_Ende;
     137                 :          0 :             break;
     138                 :            :         }
     139                 :            : 
     140         [ #  # ]:          0 :         if( eAkt == Z_Ende )
     141                 :          0 :             break;
     142                 :            : 
     143 [ #  # ][ #  # ]:          0 :         if( eAkt != Z_Biff5TPre && eAkt != Z_Biff5WPre )
     144         [ #  # ]:          0 :             pProgress->ProgressAbs( nProgressBaseSize + aIn.GetSvStreamPos() - nProgressBasePos );
     145                 :            : 
     146   [ #  #  #  #  :          0 :         switch( eAkt )
          #  #  #  #  #  
          #  #  #  #  #  
                      # ]
     147                 :            :         {
     148                 :            :             // ----------------------------------------------------------------
     149                 :            :             case Z_BiffNull:    // ------------------------------- Z_BiffNull -
     150                 :            :             {
     151         [ #  # ]:          0 :                 switch( nOpcode )
     152                 :            :                 {
     153                 :            :                     case EXC_ID2_BOF:
     154                 :            :                     case EXC_ID3_BOF:
     155                 :            :                     case EXC_ID4_BOF:
     156                 :            :                     case EXC_ID5_BOF:
     157                 :            :                     {
     158                 :            :                         // #i23425# don't rely on the record ID, but on the detected BIFF version
     159   [ #  #  #  #  :          0 :                         switch( GetBiff() )
                      # ]
     160                 :            :                         {
     161                 :            :                             case EXC_BIFF2:
     162         [ #  # ]:          0 :                                 Bof2();
     163         [ #  # ]:          0 :                                 if( pExcRoot->eDateiTyp == Biff2 )
     164                 :            :                                 {
     165                 :          0 :                                     eAkt = Z_Biff2;
     166         [ #  # ]:          0 :                                     NeueTabelle();
     167                 :            :                                 }
     168                 :          0 :                             break;
     169                 :            :                             case EXC_BIFF3:
     170         [ #  # ]:          0 :                                 Bof3();
     171         [ #  # ]:          0 :                                 if( pExcRoot->eDateiTyp == Biff3 )
     172                 :            :                                 {
     173                 :          0 :                                     eAkt = Z_Biff3;
     174         [ #  # ]:          0 :                                     NeueTabelle();
     175                 :            :                                 }
     176                 :          0 :                             break;
     177                 :            :                             case EXC_BIFF4:
     178         [ #  # ]:          0 :                                 Bof4();
     179         [ #  # ]:          0 :                                 if( pExcRoot->eDateiTyp == Biff4 )
     180                 :            :                                 {
     181                 :          0 :                                     eAkt = Z_Biff4;
     182         [ #  # ]:          0 :                                     NeueTabelle();
     183                 :            :                                 }
     184         [ #  # ]:          0 :                                 else if( pExcRoot->eDateiTyp == Biff4W )
     185                 :          0 :                                     eAkt = Z_Biff4W;
     186                 :          0 :                             break;
     187                 :            :                             case EXC_BIFF5:
     188         [ #  # ]:          0 :                                 Bof5();
     189         [ #  # ]:          0 :                                 if( pExcRoot->eDateiTyp == Biff5W )
     190                 :            :                                 {
     191                 :          0 :                                     eAkt = Z_Biff5WPre;
     192                 :            : 
     193                 :          0 :                                     nBdshtTab = 0;
     194                 :            : 
     195         [ #  # ]:          0 :                                     aIn.StoreGlobalPosition(); // und Position merken
     196                 :            :                                 }
     197         [ #  # ]:          0 :                                 else if( pExcRoot->eDateiTyp == Biff5 )
     198                 :            :                                 {
     199                 :            :                                     // #i62752# possible to have BIFF5 sheet without globals
     200         [ #  # ]:          0 :                                     NeueTabelle();
     201                 :          0 :                                     eAkt = Z_Biff5TPre;  // Shrfmla Prefetch, Row-Prefetch
     202                 :          0 :                                     nBofLevel = 0;
     203         [ #  # ]:          0 :                                     aIn.StoreGlobalPosition(); // und Position merken
     204                 :            :                                 }
     205                 :          0 :                             break;
     206                 :            :                             default:
     207                 :            :                                 DBG_ERROR_BIFF();
     208                 :            :                         }
     209                 :            :                     }
     210                 :          0 :                     break;
     211                 :            :                 }
     212                 :            :             }
     213                 :          0 :                 break;
     214                 :            :             // ----------------------------------------------------------------
     215                 :            :             case Z_Biff2:       // ---------------------------------- Z_Biff2 -
     216                 :            :             {
     217   [ #  #  #  #  :          0 :                 switch( nOpcode )
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
             #  #  #  # ]
     218                 :            :                 {
     219                 :            :                     case EXC_ID2_DIMENSIONS:
     220         [ #  # ]:          0 :                     case EXC_ID3_DIMENSIONS:    ReadDimensions();       break;
     221                 :            :                     case EXC_ID2_BLANK:
     222         [ #  # ]:          0 :                     case EXC_ID3_BLANK:         ReadBlank();            break;
     223         [ #  # ]:          0 :                     case EXC_ID2_INTEGER:       ReadInteger();          break;
     224                 :            :                     case EXC_ID2_NUMBER:
     225         [ #  # ]:          0 :                     case EXC_ID3_NUMBER:        ReadNumber();           break;
     226                 :            :                     case EXC_ID2_LABEL:
     227         [ #  # ]:          0 :                     case EXC_ID3_LABEL:         ReadLabel();            break;
     228                 :            :                     case EXC_ID2_BOOLERR:
     229         [ #  # ]:          0 :                     case EXC_ID3_BOOLERR:       ReadBoolErr();          break;
     230         [ #  # ]:          0 :                     case EXC_ID_RK:             ReadRk();               break;
     231                 :            : 
     232         [ #  # ]:          0 :                     case 0x06:  Formula25(); break;     // FORMULA      [ 2  5]
     233         [ #  # ]:          0 :                     case 0x08:  Row25(); break;         // ROW          [ 2  5]
     234                 :            :                     case 0x0A:                          // EOF          [ 2345]
     235         [ #  # ]:          0 :                         rNumFmtBfr.CreateScFormats();
     236         [ #  # ]:          0 :                         rNameMgr.ConvertAllTokens();
     237         [ #  # ]:          0 :                         Eof();
     238                 :          0 :                         eAkt = Z_Ende;
     239                 :          0 :                         break;
     240                 :            :                     case 0x14:
     241         [ #  # ]:          0 :                     case 0x15:  rPageSett.ReadHeaderFooter( maStrm );   break;
     242         [ #  # ]:          0 :                     case 0x17:  Externsheet(); break;   // EXTERNSHEET  [ 2345]
     243         [ #  # ]:          0 :                     case 0x18:  rNameMgr.ReadName( maStrm );            break;
     244 [ #  # ][ #  # ]:          0 :                     case 0x1C:  GetCurrSheetDrawing().ReadNote( maStrm );break;
     245         [ #  # ]:          0 :                     case 0x1D:  rTabViewSett.ReadSelection( maStrm );   break;
     246         [ #  # ]:          0 :                     case 0x1E:  rNumFmtBfr.ReadFormat( maStrm );        break;
     247         [ #  # ]:          0 :                     case 0x20:  Columndefault(); break; // COLUMNDEFAULT[ 2   ]
     248         [ #  # ]:          0 :                     case 0x21:  Array25(); break;       // ARRAY        [ 2  5]
     249         [ #  # ]:          0 :                     case 0x23:  Externname25(); break;  // EXTERNNAME   [ 2  5]
     250         [ #  # ]:          0 :                     case 0x24:  Colwidth(); break;      // COLWIDTH     [ 2   ]
     251         [ #  # ]:          0 :                     case 0x25:  Defrowheight2(); break; // DEFAULTROWHEI[ 2   ]
     252                 :            :                     case 0x26:
     253                 :            :                     case 0x27:
     254                 :            :                     case 0x28:
     255         [ #  # ]:          0 :                     case 0x29:  rPageSett.ReadMargin( maStrm );         break;
     256         [ #  # ]:          0 :                     case 0x2A:  rPageSett.ReadPrintHeaders( maStrm );   break;
     257         [ #  # ]:          0 :                     case 0x2B:  rPageSett.ReadPrintGridLines( maStrm ); break;
     258                 :            :                     case 0x2F:                          // FILEPASS     [ 2345]
     259         [ #  # ]:          0 :                         eLastErr = XclImpDecryptHelper::ReadFilepass( maStrm );
     260         [ #  # ]:          0 :                         if( eLastErr != ERRCODE_NONE )
     261                 :          0 :                             eAkt = Z_Ende;
     262                 :          0 :                         break;
     263         [ #  # ]:          0 :                     case EXC_ID2_FONT:  rFontBfr.ReadFont( maStrm );    break;
     264         [ #  # ]:          0 :                     case EXC_ID_EFONT:  rFontBfr.ReadEfont( maStrm );   break;
     265         [ #  # ]:          0 :                     case 0x3E:  rTabViewSett.ReadWindow2( maStrm, false );break;
     266         [ #  # ]:          0 :                     case 0x41:  rTabViewSett.ReadPane( maStrm );        break;
     267         [ #  # ]:          0 :                     case 0x42:  Codepage(); break;      // CODEPAGE     [ 2345]
     268         [ #  # ]:          0 :                     case 0x43:  rXFBfr.ReadXF( maStrm );                break;
     269         [ #  # ]:          0 :                     case 0x44:  Ixfe(); break;          // IXFE         [ 2   ]
     270                 :            :                 }
     271                 :            :             }
     272                 :          0 :                 break;
     273                 :            :             // ----------------------------------------------------------------
     274                 :            :             case Z_Biff3:       // ---------------------------------- Z_Biff3 -
     275                 :            :             {
     276   [ #  #  #  #  :          0 :                 switch( nOpcode )
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
             #  #  #  #  
                      # ]
     277                 :            :                 {
     278                 :            :                     // skip chart substream
     279                 :            :                     case EXC_ID2_BOF:
     280                 :            :                     case EXC_ID3_BOF:
     281                 :            :                     case EXC_ID4_BOF:
     282         [ #  # ]:          0 :                     case EXC_ID5_BOF:           XclTools::SkipSubStream( maStrm );  break;
     283                 :            : 
     284                 :            :                     case EXC_ID2_DIMENSIONS:
     285         [ #  # ]:          0 :                     case EXC_ID3_DIMENSIONS:    ReadDimensions();       break;
     286                 :            :                     case EXC_ID2_BLANK:
     287         [ #  # ]:          0 :                     case EXC_ID3_BLANK:         ReadBlank();            break;
     288         [ #  # ]:          0 :                     case EXC_ID2_INTEGER:       ReadInteger();          break;
     289                 :            :                     case EXC_ID2_NUMBER:
     290         [ #  # ]:          0 :                     case EXC_ID3_NUMBER:        ReadNumber();           break;
     291                 :            :                     case EXC_ID2_LABEL:
     292         [ #  # ]:          0 :                     case EXC_ID3_LABEL:         ReadLabel();            break;
     293                 :            :                     case EXC_ID2_BOOLERR:
     294         [ #  # ]:          0 :                     case EXC_ID3_BOOLERR:       ReadBoolErr();          break;
     295         [ #  # ]:          0 :                     case EXC_ID_RK:             ReadRk();               break;
     296                 :            : 
     297                 :            :                     case 0x0A:                          // EOF          [ 2345]
     298         [ #  # ]:          0 :                         rNumFmtBfr.CreateScFormats();
     299         [ #  # ]:          0 :                         rNameMgr.ConvertAllTokens();
     300         [ #  # ]:          0 :                         Eof();
     301                 :          0 :                         eAkt = Z_Ende;
     302                 :          0 :                         break;
     303                 :            :                     case 0x14:
     304         [ #  # ]:          0 :                     case 0x15:  rPageSett.ReadHeaderFooter( maStrm );   break;
     305         [ #  # ]:          0 :                     case 0x17:  Externsheet(); break;   // EXTERNSHEET  [ 2345]
     306                 :            :                     case 0x1A:
     307         [ #  # ]:          0 :                     case 0x1B:  rPageSett.ReadPageBreaks( maStrm );     break;
     308 [ #  # ][ #  # ]:          0 :                     case 0x1C:  GetCurrSheetDrawing().ReadNote( maStrm );break;
     309         [ #  # ]:          0 :                     case 0x1D:  rTabViewSett.ReadSelection( maStrm );   break;
     310         [ #  # ]:          0 :                     case 0x1E:  rNumFmtBfr.ReadFormat( maStrm );        break;
     311         [ #  # ]:          0 :                     case 0x22:  Rec1904(); break;       // 1904         [ 2345]
     312                 :            :                     case 0x26:
     313                 :            :                     case 0x27:
     314                 :            :                     case 0x28:
     315         [ #  # ]:          0 :                     case 0x29:  rPageSett.ReadMargin( maStrm );         break;
     316         [ #  # ]:          0 :                     case 0x2A:  rPageSett.ReadPrintHeaders( maStrm );   break;
     317         [ #  # ]:          0 :                     case 0x2B:  rPageSett.ReadPrintGridLines( maStrm ); break;
     318                 :            :                     case 0x2F:                          // FILEPASS     [ 2345]
     319         [ #  # ]:          0 :                         eLastErr = XclImpDecryptHelper::ReadFilepass( maStrm );
     320         [ #  # ]:          0 :                         if( eLastErr != ERRCODE_NONE )
     321                 :          0 :                             eAkt = Z_Ende;
     322                 :          0 :                         break;
     323         [ #  # ]:          0 :                     case EXC_ID_FILESHARING: ReadFileSharing();         break;
     324         [ #  # ]:          0 :                     case 0x41:  rTabViewSett.ReadPane( maStrm );        break;
     325         [ #  # ]:          0 :                     case 0x42:  Codepage(); break;      // CODEPAGE     [ 2345]
     326         [ #  # ]:          0 :                     case 0x56:  Builtinfmtcnt(); break; // BUILTINFMTCNT[  34 ]
     327 [ #  # ][ #  # ]:          0 :                     case 0x5D:  GetCurrSheetDrawing().ReadObj( maStrm );break;
     328         [ #  # ]:          0 :                     case 0x7D:  Colinfo(); break;       // COLINFO      [  345]
     329         [ #  # ]:          0 :                     case 0x8C:  Country(); break;       // COUNTRY      [  345]
     330         [ #  # ]:          0 :                     case 0x92:  rPal.ReadPalette( maStrm );             break;
     331         [ #  # ]:          0 :                     case 0x0206: Formula3(); break;     // FORMULA      [  3  ]
     332         [ #  # ]:          0 :                     case 0x0208: Row34(); break;        // ROW          [  34 ]
     333         [ #  # ]:          0 :                     case 0x0218: rNameMgr.ReadName( maStrm );           break;
     334         [ #  # ]:          0 :                     case 0x0221: Array34(); break;      // ARRAY        [  34 ]
     335         [ #  # ]:          0 :                     case 0x0223: Externname34(); break; // EXTERNNAME   [  34 ]
     336         [ #  # ]:          0 :                     case 0x0225: Defrowheight345();break;//DEFAULTROWHEI[  345]
     337         [ #  # ]:          0 :                     case 0x0231: rFontBfr.ReadFont( maStrm );           break;
     338         [ #  # ]:          0 :                     case 0x023E: rTabViewSett.ReadWindow2( maStrm, false );break;
     339         [ #  # ]:          0 :                     case 0x0243: rXFBfr.ReadXF( maStrm );               break;
     340         [ #  # ]:          0 :                     case 0x0293: rXFBfr.ReadStyle( maStrm );            break;
     341                 :            :                 }
     342                 :            :             }
     343                 :          0 :                 break;
     344                 :            :             // ----------------------------------------------------------------
     345                 :            :             case Z_Biff4:       // ---------------------------------- Z_Biff4 -
     346                 :            :             {
     347   [ #  #  #  #  :          0 :                 switch( nOpcode )
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
             #  #  #  # ]
     348                 :            :                 {
     349                 :            :                     // skip chart substream
     350                 :            :                     case EXC_ID2_BOF:
     351                 :            :                     case EXC_ID3_BOF:
     352                 :            :                     case EXC_ID4_BOF:
     353         [ #  # ]:          0 :                     case EXC_ID5_BOF:           XclTools::SkipSubStream( maStrm );  break;
     354                 :            : 
     355                 :            :                     case EXC_ID2_DIMENSIONS:
     356         [ #  # ]:          0 :                     case EXC_ID3_DIMENSIONS:    ReadDimensions();       break;
     357                 :            :                     case EXC_ID2_BLANK:
     358         [ #  # ]:          0 :                     case EXC_ID3_BLANK:         ReadBlank();            break;
     359         [ #  # ]:          0 :                     case EXC_ID2_INTEGER:       ReadInteger();          break;
     360                 :            :                     case EXC_ID2_NUMBER:
     361         [ #  # ]:          0 :                     case EXC_ID3_NUMBER:        ReadNumber();           break;
     362                 :            :                     case EXC_ID2_LABEL:
     363         [ #  # ]:          0 :                     case EXC_ID3_LABEL:         ReadLabel();            break;
     364                 :            :                     case EXC_ID2_BOOLERR:
     365         [ #  # ]:          0 :                     case EXC_ID3_BOOLERR:       ReadBoolErr();          break;
     366         [ #  # ]:          0 :                     case EXC_ID_RK:             ReadRk();               break;
     367                 :            : 
     368                 :            :                     case 0x0A:                          // EOF          [ 2345]
     369         [ #  # ]:          0 :                         rNumFmtBfr.CreateScFormats();
     370         [ #  # ]:          0 :                         rNameMgr.ConvertAllTokens();
     371         [ #  # ]:          0 :                         Eof();
     372                 :          0 :                         eAkt = Z_Ende;
     373                 :          0 :                         break;
     374         [ #  # ]:          0 :                     case 0x12:  SheetProtect(); break;       // SHEET PROTECTION
     375                 :            :                     case 0x14:
     376         [ #  # ]:          0 :                     case 0x15:  rPageSett.ReadHeaderFooter( maStrm );   break;
     377         [ #  # ]:          0 :                     case 0x17:  Externsheet(); break;   // EXTERNSHEET  [ 2345]
     378                 :            :                     case 0x1A:
     379         [ #  # ]:          0 :                     case 0x1B:  rPageSett.ReadPageBreaks( maStrm );     break;
     380 [ #  # ][ #  # ]:          0 :                     case 0x1C:  GetCurrSheetDrawing().ReadNote( maStrm );break;
     381         [ #  # ]:          0 :                     case 0x1D:  rTabViewSett.ReadSelection( maStrm );   break;
     382         [ #  # ]:          0 :                     case 0x22:  Rec1904(); break;       // 1904         [ 2345]
     383                 :            :                     case 0x26:
     384                 :            :                     case 0x27:
     385                 :            :                     case 0x28:
     386         [ #  # ]:          0 :                     case 0x29:  rPageSett.ReadMargin( maStrm );         break;
     387         [ #  # ]:          0 :                     case 0x2A:  rPageSett.ReadPrintHeaders( maStrm );   break;
     388         [ #  # ]:          0 :                     case 0x2B:  rPageSett.ReadPrintGridLines( maStrm ); break;
     389                 :            :                     case 0x2F:                          // FILEPASS     [ 2345]
     390         [ #  # ]:          0 :                         eLastErr = XclImpDecryptHelper::ReadFilepass( maStrm );
     391         [ #  # ]:          0 :                         if( eLastErr != ERRCODE_NONE )
     392                 :          0 :                             eAkt = Z_Ende;
     393                 :          0 :                         break;
     394         [ #  # ]:          0 :                     case EXC_ID_FILESHARING: ReadFileSharing();         break;
     395         [ #  # ]:          0 :                     case 0x41:  rTabViewSett.ReadPane( maStrm );        break;
     396         [ #  # ]:          0 :                     case 0x42:  Codepage(); break;      // CODEPAGE     [ 2345]
     397         [ #  # ]:          0 :                     case 0x55:  DefColWidth(); break;
     398         [ #  # ]:          0 :                     case 0x56:  Builtinfmtcnt(); break; // BUILTINFMTCNT[  34 ]
     399 [ #  # ][ #  # ]:          0 :                     case 0x5D:  GetCurrSheetDrawing().ReadObj( maStrm );break;
     400         [ #  # ]:          0 :                     case 0x7D:  Colinfo(); break;       // COLINFO      [  345]
     401         [ #  # ]:          0 :                     case 0x8C:  Country(); break;       // COUNTRY      [  345]
     402         [ #  # ]:          0 :                     case 0x92:  rPal.ReadPalette( maStrm );             break;
     403         [ #  # ]:          0 :                     case 0x99:  Standardwidth(); break; // STANDARDWIDTH[   45]
     404         [ #  # ]:          0 :                     case 0xA1:  rPageSett.ReadSetup( maStrm );          break;
     405         [ #  # ]:          0 :                     case 0x0208: Row34(); break;        // ROW          [  34 ]
     406         [ #  # ]:          0 :                     case 0x0218: rNameMgr.ReadName( maStrm );           break;
     407         [ #  # ]:          0 :                     case 0x0221: Array34(); break;      // ARRAY        [  34 ]
     408         [ #  # ]:          0 :                     case 0x0223: Externname34(); break; // EXTERNNAME   [  34 ]
     409         [ #  # ]:          0 :                     case 0x0225: Defrowheight345();break;//DEFAULTROWHEI[  345]
     410         [ #  # ]:          0 :                     case 0x0231: rFontBfr.ReadFont( maStrm );           break;
     411         [ #  # ]:          0 :                     case 0x023E: rTabViewSett.ReadWindow2( maStrm, false );break;
     412         [ #  # ]:          0 :                     case 0x0406: Formula4(); break;     // FORMULA      [   4 ]
     413         [ #  # ]:          0 :                     case 0x041E: rNumFmtBfr.ReadFormat( maStrm );       break;
     414         [ #  # ]:          0 :                     case 0x0443: rXFBfr.ReadXF( maStrm );               break;
     415         [ #  # ]:          0 :                     case 0x0293: rXFBfr.ReadStyle( maStrm );            break;
     416                 :            :                 }
     417                 :            :             }
     418                 :          0 :                 break;
     419                 :            :             // ----------------------------------------------------------------
     420                 :            :             case Z_Biff4W:      // --------------------------------- Z_Biff4W -
     421                 :            :             {
     422   [ #  #  #  #  :          0 :                 switch( nOpcode )
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
                   #  # ]
     423                 :            :                 {
     424                 :            :                     case 0x0A:                          // EOF          [ 2345]
     425         [ #  # ]:          0 :                         rNameMgr.ConvertAllTokens();
     426                 :          0 :                         eAkt = Z_Ende;
     427                 :          0 :                         break;
     428         [ #  # ]:          0 :                     case 0x12:  DocProtect(); break;    // PROTECT      [    5]
     429                 :            :                     case 0x2F:                          // FILEPASS     [ 2345]
     430         [ #  # ]:          0 :                         eLastErr = XclImpDecryptHelper::ReadFilepass( maStrm );
     431         [ #  # ]:          0 :                         if( eLastErr != ERRCODE_NONE )
     432                 :          0 :                             eAkt = Z_Ende;
     433                 :          0 :                         break;
     434         [ #  # ]:          0 :                     case EXC_ID_FILESHARING: ReadFileSharing();         break;
     435         [ #  # ]:          0 :                     case 0x17:  Externsheet(); break;   // EXTERNSHEET  [ 2345]
     436         [ #  # ]:          0 :                     case 0x42:  Codepage(); break;      // CODEPAGE     [ 2345]
     437         [ #  # ]:          0 :                     case 0x55:  DefColWidth(); break;
     438         [ #  # ]:          0 :                     case 0x56:  Builtinfmtcnt(); break; // BUILTINFMTCNT[  34 ]
     439         [ #  # ]:          0 :                     case 0x8C:  Country(); break;       // COUNTRY      [  345]
     440         [ #  # ]:          0 :                     case 0x8F:  Bundleheader(); break;  // BUNDLEHEADER [   4 ]
     441         [ #  # ]:          0 :                     case 0x92:  rPal.ReadPalette( maStrm );             break;
     442         [ #  # ]:          0 :                     case 0x99:  Standardwidth(); break; // STANDARDWIDTH[   45]
     443         [ #  # ]:          0 :                     case 0x0218: rNameMgr.ReadName( maStrm );           break;
     444         [ #  # ]:          0 :                     case 0x0223: Externname34(); break; // EXTERNNAME   [  34 ]
     445         [ #  # ]:          0 :                     case 0x0225: Defrowheight345();break;//DEFAULTROWHEI[  345]
     446         [ #  # ]:          0 :                     case 0x0231: rFontBfr.ReadFont( maStrm );           break;
     447                 :            :                     case 0x0409:                        // BOF          [   4 ]
     448         [ #  # ]:          0 :                         Bof4();
     449         [ #  # ]:          0 :                         if( pExcRoot->eDateiTyp == Biff4 )
     450                 :            :                         {
     451                 :          0 :                             eAkt = Z_Biff4T;
     452         [ #  # ]:          0 :                             NeueTabelle();
     453                 :            :                         }
     454                 :            :                         else
     455                 :          0 :                             eAkt = Z_Ende;
     456                 :          0 :                         break;
     457         [ #  # ]:          0 :                     case 0x041E: rNumFmtBfr.ReadFormat( maStrm );       break;
     458         [ #  # ]:          0 :                     case 0x0443: rXFBfr.ReadXF( maStrm );               break;
     459         [ #  # ]:          0 :                     case 0x0293: rXFBfr.ReadStyle( maStrm );            break;
     460                 :            :                 }
     461                 :            : 
     462                 :            :             }
     463                 :          0 :                 break;
     464                 :            :             // ----------------------------------------------------------------
     465                 :            :             case Z_Biff4T:       // --------------------------------- Z_Biff4T -
     466                 :            :             {
     467   [ #  #  #  #  :          0 :                 switch( nOpcode )
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
                #  #  # ]
     468                 :            :                 {
     469                 :            :                     // skip chart substream
     470                 :            :                     case EXC_ID2_BOF:
     471                 :            :                     case EXC_ID3_BOF:
     472                 :            :                     case EXC_ID4_BOF:
     473         [ #  # ]:          0 :                     case EXC_ID5_BOF:           XclTools::SkipSubStream( maStrm );  break;
     474                 :            : 
     475                 :            :                     case EXC_ID2_DIMENSIONS:
     476         [ #  # ]:          0 :                     case EXC_ID3_DIMENSIONS:    ReadDimensions();       break;
     477                 :            :                     case EXC_ID2_BLANK:
     478         [ #  # ]:          0 :                     case EXC_ID3_BLANK:         ReadBlank();            break;
     479         [ #  # ]:          0 :                     case EXC_ID2_INTEGER:       ReadInteger();          break;
     480                 :            :                     case EXC_ID2_NUMBER:
     481         [ #  # ]:          0 :                     case EXC_ID3_NUMBER:        ReadNumber();           break;
     482                 :            :                     case EXC_ID2_LABEL:
     483         [ #  # ]:          0 :                     case EXC_ID3_LABEL:         ReadLabel();            break;
     484                 :            :                     case EXC_ID2_BOOLERR:
     485         [ #  # ]:          0 :                     case EXC_ID3_BOOLERR:       ReadBoolErr();          break;
     486         [ #  # ]:          0 :                     case EXC_ID_RK:             ReadRk();               break;
     487                 :            : 
     488                 :            :                     case 0x0A:                          // EOF          [ 2345]
     489         [ #  # ]:          0 :                         rNameMgr.ConvertAllTokens();
     490         [ #  # ]:          0 :                         Eof();
     491                 :          0 :                         eAkt = Z_Biff4E;
     492                 :          0 :                     break;
     493         [ #  # ]:          0 :                     case 0x12:  SheetProtect(); break;       // SHEET PROTECTION
     494                 :            :                     case 0x14:
     495         [ #  # ]:          0 :                     case 0x15:  rPageSett.ReadHeaderFooter( maStrm );   break;
     496                 :            :                     case 0x1A:
     497         [ #  # ]:          0 :                     case 0x1B:  rPageSett.ReadPageBreaks( maStrm );     break;
     498 [ #  # ][ #  # ]:          0 :                     case 0x1C:  GetCurrSheetDrawing().ReadNote( maStrm );break;
     499         [ #  # ]:          0 :                     case 0x1D:  rTabViewSett.ReadSelection( maStrm );   break;
     500                 :            :                     case 0x2F:                          // FILEPASS     [ 2345]
     501         [ #  # ]:          0 :                         eLastErr = XclImpDecryptHelper::ReadFilepass( maStrm );
     502         [ #  # ]:          0 :                         if( eLastErr != ERRCODE_NONE )
     503                 :          0 :                             eAkt = Z_Ende;
     504                 :          0 :                         break;
     505         [ #  # ]:          0 :                     case 0x41:  rTabViewSett.ReadPane( maStrm );        break;
     506         [ #  # ]:          0 :                     case 0x42:  Codepage(); break;      // CODEPAGE     [ 2345]
     507         [ #  # ]:          0 :                     case 0x55:  DefColWidth(); break;
     508         [ #  # ]:          0 :                     case 0x56:  Builtinfmtcnt(); break; // BUILTINFMTCNT[  34 ]
     509 [ #  # ][ #  # ]:          0 :                     case 0x5D:  GetCurrSheetDrawing().ReadObj( maStrm );break;
     510         [ #  # ]:          0 :                     case 0x7D:  Colinfo(); break;       // COLINFO      [  345]
     511         [ #  # ]:          0 :                     case 0x8C:  Country(); break;       // COUNTRY      [  345]
     512         [ #  # ]:          0 :                     case 0x8F:  Bundleheader(); break;  // BUNDLEHEADER [   4 ]
     513         [ #  # ]:          0 :                     case 0x92:  rPal.ReadPalette( maStrm );             break;
     514         [ #  # ]:          0 :                     case 0x99:  Standardwidth(); break; // STANDARDWIDTH[   45]
     515         [ #  # ]:          0 :                     case 0xA1:  rPageSett.ReadSetup( maStrm );          break;
     516         [ #  # ]:          0 :                     case 0x0208: Row34(); break;        // ROW          [  34 ]
     517         [ #  # ]:          0 :                     case 0x0218: rNameMgr.ReadName( maStrm );           break;
     518         [ #  # ]:          0 :                     case 0x0221: Array34(); break;
     519         [ #  # ]:          0 :                     case 0x0225: Defrowheight345();break;//DEFAULTROWHEI[  345]
     520         [ #  # ]:          0 :                     case 0x0231: rFontBfr.ReadFont( maStrm );           break;
     521         [ #  # ]:          0 :                     case 0x023E: rTabViewSett.ReadWindow2( maStrm, false );break;
     522         [ #  # ]:          0 :                     case 0x0406: Formula4(); break;
     523         [ #  # ]:          0 :                     case 0x041E: rNumFmtBfr.ReadFormat( maStrm );       break;
     524         [ #  # ]:          0 :                     case 0x0443: rXFBfr.ReadXF( maStrm );               break;
     525         [ #  # ]:          0 :                     case 0x0293: rXFBfr.ReadStyle( maStrm );            break;
     526                 :            :                 }
     527                 :            : 
     528                 :            :             }
     529                 :          0 :                 break;
     530                 :            :             // ----------------------------------------------------------------
     531                 :            :             case Z_Biff4E:      // --------------------------------- Z_Biff4E -
     532                 :            :             {
     533   [ #  #  #  # ]:          0 :                 switch( nOpcode )
     534                 :            :                 {
     535                 :            :                     case 0x0A:                          // EOF          [ 2345]
     536                 :          0 :                         eAkt = Z_Ende;
     537                 :          0 :                         break;
     538                 :          0 :                     case 0x8F:  break;                  // BUNDLEHEADER [   4 ]
     539                 :            :                     case 0x0409:                        // BOF          [   4 ]
     540         [ #  # ]:          0 :                         Bof4();
     541         [ #  # ]:          0 :                         NeueTabelle();
     542         [ #  # ]:          0 :                         if( pExcRoot->eDateiTyp == Biff4 )
     543                 :            :                         {
     544                 :          0 :                             eAkt = Z_Biff4T;
     545                 :            :                         }
     546                 :            :                         else
     547                 :            :                         {
     548                 :          0 :                             ePrev = eAkt;
     549                 :          0 :                             eAkt = Z_Biffn0;
     550                 :            :                         }
     551                 :          0 :                         break;
     552                 :            :                 }
     553                 :            : 
     554                 :            :             }
     555                 :          0 :                 break;
     556                 :            :             case Z_Biff5WPre:   // ------------------------------ Z_Biff5WPre -
     557                 :            :             {
     558   [ #  #  #  #  :          0 :                 switch( nOpcode )
          #  #  #  #  #  
                      # ]
     559                 :            :                 {
     560                 :            :                     case 0x0A:                          // EOF          [ 2345]
     561                 :          0 :                         eAkt = Z_Biff5W;
     562         [ #  # ]:          0 :                         aIn.SeekGlobalPosition();  // und zurueck an alte Position
     563                 :          0 :                         break;
     564         [ #  # ]:          0 :                     case 0x12:  DocProtect(); break;    // PROTECT      [    5]
     565                 :            :                     case 0x2F:                          // FILEPASS     [ 2345]
     566         [ #  # ]:          0 :                         eLastErr = XclImpDecryptHelper::ReadFilepass( maStrm );
     567         [ #  # ]:          0 :                         if( eLastErr != ERRCODE_NONE )
     568                 :          0 :                             eAkt = Z_Ende;
     569                 :          0 :                         break;
     570         [ #  # ]:          0 :                     case EXC_ID_FILESHARING: ReadFileSharing();         break;
     571         [ #  # ]:          0 :                     case 0x3D:  Window1(); break;
     572         [ #  # ]:          0 :                     case 0x42:  Codepage(); break;      // CODEPAGE     [ 2345]
     573         [ #  # ]:          0 :                     case 0x85:  Boundsheet(); break;    // BOUNDSHEET   [    5]
     574         [ #  # ]:          0 :                     case 0x8C:  Country(); break;       // COUNTRY      [  345]
     575                 :            :                     // PALETTE follows XFs, but already needed while reading the XFs
     576         [ #  # ]:          0 :                     case 0x92:  rPal.ReadPalette( maStrm );             break;
     577                 :            :                 }
     578                 :            :             }
     579                 :          0 :                 break;
     580                 :            :             case Z_Biff5W:      // --------------------------------- Z_Biff5W -
     581                 :            :             {
     582   [ #  #  #  #  :          0 :                 switch( nOpcode )
          #  #  #  #  #  
                #  #  # ]
     583                 :            :                 {
     584                 :            :                     case 0x0A:                          // EOF          [ 2345]
     585         [ #  # ]:          0 :                         rNumFmtBfr.CreateScFormats();
     586         [ #  # ]:          0 :                         rXFBfr.CreateUserStyles();
     587         [ #  # ]:          0 :                         rNameMgr.ConvertAllTokens();
     588                 :          0 :                         eAkt = Z_Biff5E;
     589                 :          0 :                         break;
     590         [ #  # ]:          0 :                     case 0x18:  rNameMgr.ReadName( maStrm );            break;
     591         [ #  # ]:          0 :                     case 0x1E:  rNumFmtBfr.ReadFormat( maStrm );        break;
     592         [ #  # ]:          0 :                     case 0x22:  Rec1904(); break;       // 1904         [ 2345]
     593         [ #  # ]:          0 :                     case 0x31:  rFontBfr.ReadFont( maStrm );            break;
     594         [ #  # ]:          0 :                     case 0x56:  Builtinfmtcnt(); break; // BUILTINFMTCNT[  34 ]
     595         [ #  # ]:          0 :                     case 0x8D:  Hideobj(); break;       // HIDEOBJ      [  345]
     596         [ #  # ]:          0 :                     case 0xDE:  Olesize(); break;
     597         [ #  # ]:          0 :                     case 0xE0:  rXFBfr.ReadXF( maStrm );                break;
     598         [ #  # ]:          0 :                     case 0x0293: rXFBfr.ReadStyle( maStrm );            break;
     599         [ #  # ]:          0 :                     case 0x041E: rNumFmtBfr.ReadFormat( maStrm );       break;
     600                 :            :                 }
     601                 :            : 
     602                 :            :             }
     603                 :          0 :                 break;
     604                 :            :             // ----------------------------------------------------------------
     605                 :            :             case Z_Biff5TPre:   // ------------------------------- Z_Biff5Pre -
     606                 :            :             {
     607         [ #  # ]:          0 :                 if( nOpcode == 0x0809 )
     608                 :          0 :                     nBofLevel++;
     609 [ #  # ][ #  # ]:          0 :                 else if( (nOpcode == 0x000A) && nBofLevel )
     610                 :          0 :                     nBofLevel--;
     611         [ #  # ]:          0 :                 else if( !nBofLevel )                       // don't read chart records
     612                 :            :                 {
     613   [ #  #  #  #  :          0 :                     switch( nOpcode )
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
             #  #  #  # ]
     614                 :            :                     {
     615                 :            :                         case EXC_ID2_DIMENSIONS:
     616         [ #  # ]:          0 :                         case EXC_ID3_DIMENSIONS:    ReadDimensions();       break;
     617         [ #  # ]:          0 :                         case 0x08:  Row25(); break;         // ROW          [ 2  5]
     618                 :            :                         case 0x0A:                          // EOF          [ 2345]
     619                 :          0 :                             eAkt = Z_Biff5T;
     620         [ #  # ]:          0 :                             aIn.SeekGlobalPosition(); // und zurueck an alte Position
     621                 :          0 :                             break;
     622         [ #  # ]:          0 :                         case 0x12:  SheetProtect(); break;       // SHEET PROTECTION
     623                 :            :                         case 0x1A:
     624         [ #  # ]:          0 :                         case 0x1B:  rPageSett.ReadPageBreaks( maStrm );     break;
     625         [ #  # ]:          0 :                         case 0x1D:  rTabViewSett.ReadSelection( maStrm );   break;
     626         [ #  # ]:          0 :                         case 0x17:  Externsheet(); break;   // EXTERNSHEET  [ 2345]
     627         [ #  # ]:          0 :                         case 0x21:  Array25(); break;       // ARRAY        [ 2  5]
     628         [ #  # ]:          0 :                         case 0x23:  Externname25(); break;  // EXTERNNAME   [ 2  5]
     629         [ #  # ]:          0 :                         case 0x41:  rTabViewSett.ReadPane( maStrm );        break;
     630         [ #  # ]:          0 :                         case 0x42:  Codepage(); break;      // CODEPAGE     [ 2345]
     631         [ #  # ]:          0 :                         case 0x55:  DefColWidth(); break;
     632         [ #  # ]:          0 :                         case 0x7D:  Colinfo(); break;       // COLINFO      [  345]
     633         [ #  # ]:          0 :                         case 0x81:  Wsbool(); break;        // WSBOOL       [ 2345]
     634         [ #  # ]:          0 :                         case 0x8C:  Country(); break;       // COUNTRY      [  345]
     635         [ #  # ]:          0 :                         case 0x99:  Standardwidth(); break; // STANDARDWIDTH[   45]
     636         [ #  # ]:          0 :                         case 0x0208: Row34(); break;        // ROW          [  34 ]
     637         [ #  # ]:          0 :                         case 0x0221: Array34(); break;      // ARRAY        [  34 ]
     638         [ #  # ]:          0 :                         case 0x0223: Externname34(); break; // EXTERNNAME   [  34 ]
     639         [ #  # ]:          0 :                         case 0x0225: Defrowheight345();break;//DEFAULTROWHEI[  345]
     640         [ #  # ]:          0 :                         case 0x023E: rTabViewSett.ReadWindow2( maStrm, false );break;
     641         [ #  # ]:          0 :                         case 0x04BC: Shrfmla(); break;      // SHRFMLA      [    5]
     642                 :            :                     }
     643                 :            :                 }
     644                 :            :             }
     645                 :          0 :                 break;
     646                 :            :             // ----------------------------------------------------------------
     647                 :            :             case Z_Biff5T:       // --------------------------------- Z_Biff5T -
     648                 :            :             {
     649   [ #  #  #  #  :          0 :                 switch( nOpcode )
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
             #  #  #  # ]
     650                 :            :                 {
     651                 :            :                     case EXC_ID2_BLANK:
     652         [ #  # ]:          0 :                     case EXC_ID3_BLANK:         ReadBlank();            break;
     653         [ #  # ]:          0 :                     case EXC_ID2_INTEGER:       ReadInteger();          break;
     654                 :            :                     case EXC_ID2_NUMBER:
     655         [ #  # ]:          0 :                     case EXC_ID3_NUMBER:        ReadNumber();           break;
     656                 :            :                     case EXC_ID2_LABEL:
     657         [ #  # ]:          0 :                     case EXC_ID3_LABEL:         ReadLabel();            break;
     658                 :            :                     case EXC_ID2_BOOLERR:
     659         [ #  # ]:          0 :                     case EXC_ID3_BOOLERR:       ReadBoolErr();          break;
     660         [ #  # ]:          0 :                     case EXC_ID_RK:             ReadRk();               break;
     661                 :            : 
     662                 :            :                     case EXC_ID2_FORMULA:
     663                 :            :                     case EXC_ID3_FORMULA:
     664         [ #  # ]:          0 :                     case EXC_ID4_FORMULA:       Formula25(); break;
     665         [ #  # ]:          0 :                     case 0x0A:  Eof(); eAkt = Z_Biff5E;                 break;
     666                 :            :                     case 0x14:
     667         [ #  # ]:          0 :                     case 0x15:  rPageSett.ReadHeaderFooter( maStrm );   break;
     668         [ #  # ]:          0 :                     case 0x17:  Externsheet(); break;   // EXTERNSHEET  [ 2345]
     669 [ #  # ][ #  # ]:          0 :                     case 0x1C:  GetCurrSheetDrawing().ReadNote( maStrm );break;
     670         [ #  # ]:          0 :                     case 0x1D:  rTabViewSett.ReadSelection( maStrm );   break;
     671         [ #  # ]:          0 :                     case 0x23:  Externname25(); break;  // EXTERNNAME   [ 2  5]
     672                 :            :                     case 0x26:
     673                 :            :                     case 0x27:
     674                 :            :                     case 0x28:
     675         [ #  # ]:          0 :                     case 0x29:  rPageSett.ReadMargin( maStrm );         break;
     676         [ #  # ]:          0 :                     case 0x2A:  rPageSett.ReadPrintHeaders( maStrm );   break;
     677         [ #  # ]:          0 :                     case 0x2B:  rPageSett.ReadPrintGridLines( maStrm ); break;
     678                 :            :                     case 0x2F:                          // FILEPASS     [ 2345]
     679         [ #  # ]:          0 :                         eLastErr = XclImpDecryptHelper::ReadFilepass( maStrm );
     680         [ #  # ]:          0 :                         if( eLastErr != ERRCODE_NONE )
     681                 :          0 :                             eAkt = Z_Ende;
     682                 :          0 :                         break;
     683 [ #  # ][ #  # ]:          0 :                     case 0x5D:  GetCurrSheetDrawing().ReadObj( maStrm );break;
     684                 :            :                     case 0x83:
     685         [ #  # ]:          0 :                     case 0x84:  rPageSett.ReadCenter( maStrm );         break;
     686         [ #  # ]:          0 :                     case 0xA0:  rTabViewSett.ReadScl( maStrm );         break;
     687         [ #  # ]:          0 :                     case 0xA1:  rPageSett.ReadSetup( maStrm );          break;
     688         [ #  # ]:          0 :                     case 0xBD:  Mulrk(); break;         // MULRK        [    5]
     689         [ #  # ]:          0 :                     case 0xBE:  Mulblank(); break;      // MULBLANK     [    5]
     690         [ #  # ]:          0 :                     case 0xD6:  Rstring(); break;       // RSTRING      [    5]
     691         [ #  # ]:          0 :                     case 0x00E5: Cellmerging();          break;  // #i62300#
     692         [ #  # ]:          0 :                     case 0x0236: TableOp(); break;      // TABLE        [    5]
     693                 :            :                     case 0x0809:                        // BOF          [    5]
     694         [ #  # ]:          0 :                         XclTools::SkipSubStream( maStrm );
     695                 :          0 :                         break;
     696                 :            :                 }
     697                 :            : 
     698                 :            :             }
     699                 :          0 :                 break;
     700                 :            :             // ----------------------------------------------------------------
     701                 :            :             case Z_Biff5E:      // --------------------------------- Z_Biff5E -
     702                 :            :             {
     703         [ #  # ]:          0 :                 switch( nOpcode )
     704                 :            :                 {
     705                 :            :                     case 0x0809:                        // BOF          [    5]
     706         [ #  # ]:          0 :                         Bof5();
     707         [ #  # ]:          0 :                         NeueTabelle();
     708      [ #  #  # ]:          0 :                         switch( pExcRoot->eDateiTyp )
     709                 :            :                         {
     710                 :            :                             case Biff5:
     711                 :            :                             case Biff5M4:
     712                 :          0 :                                 eAkt = Z_Biff5TPre; // Shrfmla Prefetch, Row-Prefetch
     713                 :          0 :                                 nBofLevel = 0;
     714         [ #  # ]:          0 :                                 aIn.StoreGlobalPosition(); // und Position merken
     715                 :          0 :                             break;
     716                 :            :                             case Biff5C:    // chart sheet
     717 [ #  # ][ #  # ]:          0 :                                 GetCurrSheetDrawing().ReadTabChart( maStrm );
     718         [ #  # ]:          0 :                                 Eof();
     719 [ #  # ][ #  # ]:          0 :                                 GetTracer().TraceChartOnlySheet();
     720                 :          0 :                             break;
     721                 :            :                             case Biff5V:
     722                 :            :                             default:
     723         [ #  # ]:          0 :                                 pD->SetVisible( GetCurrScTab(), false );
     724                 :          0 :                                 ePrev = eAkt;
     725                 :          0 :                                 eAkt = Z_Biffn0;
     726                 :            :                         }
     727                 :            :                         OSL_ENSURE( pExcRoot->eDateiTyp != Biff5W,
     728                 :            :                             "+ImportExcel::Read(): Doppel-Whopper-Workbook!" );
     729                 :            : 
     730                 :          0 :                         break;
     731                 :            :                 }
     732                 :            : 
     733                 :            :             }
     734                 :          0 :                 break;
     735                 :            :             case Z_Biffn0:      // --------------------------------- Z_Biffn0 -
     736                 :            :             {
     737         [ #  # ]:          0 :                 switch( nOpcode )
     738                 :            :                 {
     739                 :            :                     case 0x0A:                          // EOF          [ 2345]
     740                 :          0 :                         eAkt = ePrev;
     741                 :          0 :                         IncCurrScTab();
     742                 :          0 :                         break;
     743                 :            :                 }
     744                 :            : 
     745                 :            :             }
     746                 :          0 :                 break;
     747                 :            :             // ----------------------------------------------------------------
     748                 :            :             case Z_Ende:        // ----------------------------------- Z_Ende -
     749                 :            :                 OSL_FAIL( "*ImportExcel::Read(): Not possible state!" );
     750                 :          0 :                 break;
     751                 :            :             default: OSL_FAIL( "-ImportExcel::Read(): Zustand vergessen!" );
     752                 :            :         }
     753                 :            :     }
     754                 :            : 
     755         [ #  # ]:          0 :     if( eLastErr == eERR_OK )
     756                 :            :     {
     757                 :          0 :         pProgress.reset();
     758                 :            : 
     759         [ #  # ]:          0 :         AdjustRowHeight();
     760         [ #  # ]:          0 :         PostDocLoad();
     761                 :            : 
     762         [ #  # ]:          0 :         pD->CalcAfterLoad();
     763                 :            : 
     764         [ #  # ]:          0 :         const XclImpAddressConverter& rAddrConv = GetAddressConverter();
     765         [ #  # ]:          0 :         if( rAddrConv.IsTabTruncated() )
     766                 :          0 :             eLastErr = SCWARN_IMPORT_SHEET_OVERFLOW;
     767 [ #  # ][ #  # ]:          0 :         else if( bTabTruncated || rAddrConv.IsRowTruncated() )
                 [ #  # ]
     768                 :          0 :             eLastErr = SCWARN_IMPORT_ROW_OVERFLOW;
     769         [ #  # ]:          0 :         else if( rAddrConv.IsColTruncated() )
     770                 :          0 :             eLastErr = SCWARN_IMPORT_COLUMN_OVERFLOW;
     771                 :            :     }
     772                 :            : 
     773         [ #  # ]:          0 :     return eLastErr;
     774                 :            : }
     775                 :            : 
     776                 :            : 
     777                 :            : //___________________________________________________________________
     778                 :            : 
     779                 :         55 : FltError ImportExcel8::Read( void )
     780                 :            : {
     781                 :            : #if EXC_INCL_DUMPER
     782                 :            :     {
     783                 :            :         Biff8RecDumper aDumper( GetRoot(), sal_True );
     784                 :            :         if( aDumper.Dump( aIn ) )
     785                 :            :             return ERRCODE_ABORT;
     786                 :            :     }
     787                 :            : #endif
     788                 :            :     // read the entire BIFF8 stream
     789                 :            :     // don't look too close - this stuff seriously needs to be reworked
     790                 :            : 
     791         [ +  - ]:         55 :     XclImpPageSettings&     rPageSett       = GetPageSettings();
     792         [ +  - ]:         55 :     XclImpTabViewSettings&  rTabViewSett    = GetTabViewSettings();
     793         [ +  - ]:         55 :     XclImpPalette&          rPal            = GetPalette();
     794         [ +  - ]:         55 :     XclImpFontBuffer&       rFontBfr        = GetFontBuffer();
     795         [ +  - ]:         55 :     XclImpNumFmtBuffer&     rNumFmtBfr      = GetNumFmtBuffer();
     796         [ +  - ]:         55 :     XclImpXFBuffer&         rXFBfr          = GetXFBuffer();
     797         [ +  - ]:         55 :     XclImpSst&              rSst            = GetSst();
     798         [ +  - ]:         55 :     XclImpTabInfo&          rTabInfo        = GetTabInfo();
     799         [ +  - ]:         55 :     XclImpNameManager&      rNameMgr        = GetNameManager();
     800         [ +  - ]:         55 :     XclImpLinkManager&      rLinkMgr        = GetLinkManager();
     801         [ +  - ]:         55 :     XclImpObjectManager&    rObjMgr         = GetObjectManager();
     802                 :            :     // call to GetCurrSheetDrawing() cannot be cached (changes in new sheets)
     803         [ +  - ]:         55 :     XclImpCondFormatManager& rCondFmtMgr    = GetCondFormatManager();
     804         [ +  - ]:         55 :     XclImpValidationManager& rValidMgr      = GetValidationManager();
     805         [ +  - ]:         55 :     XclImpPivotTableManager& rPTableMgr     = GetPivotTableManager();
     806         [ +  - ]:         55 :     XclImpWebQueryBuffer&   rWQBfr          = GetWebQueryBuffer();
     807                 :            : 
     808                 :         55 :     bool bInUserView = false;           // true = In USERSVIEW(BEGIN|END) record block.
     809                 :            : 
     810                 :            :     enum XclImpReadState
     811                 :            :     {
     812                 :            :         EXC_STATE_BEFORE_GLOBALS,       /// Before workbook globals (wait for initial BOF).
     813                 :            :         EXC_STATE_GLOBALS_PRE,          /// Prefetch for workbook globals.
     814                 :            :         EXC_STATE_GLOBALS,              /// Workbook globals.
     815                 :            :         EXC_STATE_BEFORE_SHEET,         /// Before worksheet (wait for new worksheet BOF).
     816                 :            :         EXC_STATE_SHEET_PRE,            /// Prefetch for worksheet.
     817                 :            :         EXC_STATE_SHEET,                /// Worksheet.
     818                 :            :         EXC_STATE_END                   /// Stop reading.
     819                 :            :     };
     820                 :            : 
     821                 :         55 :     XclImpReadState eAkt = EXC_STATE_BEFORE_GLOBALS;
     822                 :            : 
     823                 :         55 :     FltError eLastErr = eERR_OK;
     824                 :            : 
     825                 :            :     SAL_WNODEPRECATED_DECLARATIONS_PUSH
     826                 :            :     ::std::auto_ptr< ScfSimpleProgressBar > pProgress( new ScfSimpleProgressBar(
     827 [ +  - ][ +  - ]:         55 :         aIn.GetSvStreamSize(), GetDocShell(), STR_LOAD_DOC ) );
                 [ +  - ]
     828                 :            :     SAL_WNODEPRECATED_DECLARATIONS_POP
     829                 :            : 
     830                 :            :     /*  #i104057# Need to track a base position for progress bar calculation,
     831                 :            :         because sheet substreams may not be in order of sheets. */
     832                 :         55 :     sal_Size nProgressBasePos = 0;
     833                 :         55 :     sal_Size nProgressBaseSize = 0;
     834                 :            : 
     835                 :         55 :     bool bSheetHasCodeName = false;
     836                 :            : 
     837         [ +  - ]:         55 :     std::vector<rtl::OUString> aCodeNames;
     838         [ +  - ]:         55 :     std::vector < SCTAB > nTabsWithNoCodeName;
     839                 :            : 
     840         [ +  - ]:      45613 :     while( eAkt != EXC_STATE_END )
     841                 :            :     {
     842         [ +  + ]:      45613 :         if( eAkt == EXC_STATE_BEFORE_SHEET )
     843                 :            :         {
     844                 :        217 :             sal_uInt16 nScTab = GetCurrScTab();
     845         [ +  + ]:        217 :             if( nScTab < maSheetOffsets.size()  )
     846                 :            :             {
     847                 :        165 :                 nProgressBaseSize += (aIn.GetSvStreamPos() - nProgressBasePos);
     848         [ +  - ]:        165 :                 nProgressBasePos = maSheetOffsets[ nScTab ];
     849 [ +  - ][ +  - ]:        165 :                 if (aIn.PeekRecId(nProgressBasePos) == EXC_ID5_BOF)
     850                 :            :                     // BOUNDSHEET points to a valid BOF record.  Good.
     851         [ +  - ]:        165 :                     aIn.StartNextRecord(nProgressBasePos);
     852                 :            :                 else
     853                 :            :                 {
     854                 :            :                     // i#115255 fdo#40304 BOUNDSHEET doesn't point to a valid
     855                 :            :                     // BOF record position.  Scan the records manually (from
     856                 :            :                     // the BOUNDSHEET position) until we find a BOF.  Some 3rd
     857                 :            :                     // party Russian programs generate invalid xls docs with
     858                 :            :                     // this kind of silliness.
     859                 :          0 :                     bool bValid = true;
     860 [ #  # ][ #  # ]:          0 :                     while (bValid && aIn.GetRecId() != EXC_ID5_BOF)
                 [ #  # ]
     861         [ #  # ]:          0 :                         bValid = aIn.StartNextRecord();
     862                 :            : 
     863         [ #  # ]:          0 :                     if (!bValid)
     864                 :            :                         // Safeguard ourselves from potential infinite loop.
     865                 :          0 :                         eAkt = EXC_STATE_END;
     866                 :            :                 }
     867                 :            :             }
     868                 :            :             else
     869                 :         52 :                 eAkt = EXC_STATE_END;
     870                 :            :         }
     871                 :            :         else
     872         [ +  - ]:      45396 :             aIn.StartNextRecord();
     873                 :            : 
     874         [ +  + ]:      45613 :         if( !aIn.IsValid() )
     875                 :            :         {
     876                 :            :             // #i63591# finalize table if EOF is missing
     877      [ -  -  + ]:          3 :             switch( eAkt )
     878                 :            :             {
     879                 :            :                 case EXC_STATE_SHEET_PRE:
     880                 :          0 :                     eAkt = EXC_STATE_SHEET;
     881         [ #  # ]:          0 :                     aIn.SeekGlobalPosition();
     882                 :          0 :                     continue;   // next iteration in while loop
     883                 :            :                 case EXC_STATE_SHEET:
     884         [ #  # ]:          0 :                     Eof();
     885                 :          0 :                     eAkt = EXC_STATE_END;
     886                 :          0 :                 break;
     887                 :            :                 default:
     888                 :          3 :                     eAkt = EXC_STATE_END;
     889                 :            :             }
     890                 :            :         }
     891                 :            : 
     892         [ +  + ]:      45613 :         if( eAkt == EXC_STATE_END )
     893                 :         55 :             break;
     894                 :            : 
     895 [ +  + ][ +  + ]:      45558 :         if( eAkt != EXC_STATE_SHEET_PRE && eAkt != EXC_STATE_GLOBALS_PRE )
     896         [ +  - ]:      22567 :             pProgress->ProgressAbs( nProgressBaseSize + aIn.GetSvStreamPos() - nProgressBasePos );
     897                 :            : 
     898                 :      45558 :         sal_uInt16 nRecId = aIn.GetRecId();
     899                 :            : 
     900                 :            :         /*  #i39464# Ignore records between USERSVIEWBEGIN and USERSVIEWEND
     901                 :            :             completely (user specific view settings). Otherwise view settings
     902                 :            :             and filters are loaded multiple times, which at least causes
     903                 :            :             problems in auto-filters. */
     904      [ -  -  + ]:      45558 :         switch( nRecId )
     905                 :            :         {
     906                 :            :             case EXC_ID_USERSVIEWBEGIN:
     907                 :            :                 OSL_ENSURE( !bInUserView, "ImportExcel8::Read - nested user view settings" );
     908                 :          0 :                 bInUserView = true;
     909                 :          0 :             break;
     910                 :            :             case EXC_ID_USERSVIEWEND:
     911                 :            :                 OSL_ENSURE( bInUserView, "ImportExcel8::Read - not in user view settings" );
     912                 :          0 :                 bInUserView = false;
     913                 :          0 :             break;
     914                 :            :         }
     915                 :            : 
     916 [ +  - ][ +  +  :      45558 :         if( !bInUserView ) switch( eAkt )
             +  +  +  +  
                      - ]
     917                 :            :         {
     918                 :            :             // ----------------------------------------------------------------
     919                 :            :             // before workbook globals: wait for initial workbook globals BOF
     920                 :            :             case EXC_STATE_BEFORE_GLOBALS:
     921                 :            :             {
     922         [ +  + ]:         70 :                 if( nRecId == EXC_ID5_BOF )
     923                 :            :                 {
     924                 :            :                     OSL_ENSURE( GetBiff() == EXC_BIFF8, "ImportExcel8::Read - wrong BIFF version" );
     925         [ +  - ]:         55 :                     Bof5();
     926         [ +  + ]:         55 :                     if( pExcRoot->eDateiTyp == Biff8W )
     927                 :            :                     {
     928                 :         52 :                         eAkt = EXC_STATE_GLOBALS_PRE;
     929         [ +  - ]:         52 :                         maStrm.StoreGlobalPosition();
     930                 :         52 :                         nBdshtTab = 0;
     931                 :            :                     }
     932         [ -  + ]:          3 :                     else if( pExcRoot->eDateiTyp == Biff8 )
     933                 :            :                     {
     934                 :            :                         // #i62752# possible to have BIFF8 sheet without globals
     935         [ #  # ]:          0 :                         NeueTabelle();
     936                 :          0 :                         eAkt = EXC_STATE_SHEET_PRE;  // Shrfmla Prefetch, Row-Prefetch
     937                 :          0 :                         bSheetHasCodeName = false; // reset
     938         [ #  # ]:          0 :                         aIn.StoreGlobalPosition();
     939                 :            :                     }
     940                 :            :                 }
     941                 :            :             }
     942                 :         70 :             break;
     943                 :            : 
     944                 :            :             // ----------------------------------------------------------------
     945                 :            :             // prefetch for workbook globals
     946                 :            :             case EXC_STATE_GLOBALS_PRE:
     947                 :            :             {
     948   [ +  +  +  +  :       7159 :                 switch( nRecId )
          -  -  +  +  +  
                +  +  + ]
     949                 :            :                 {
     950                 :            :                     case EXC_ID_EOF:
     951                 :            :                     case EXC_ID_EXTSST:
     952                 :            :                         /*  #i56376# evil hack: if EOF for globals is missing,
     953                 :            :                             simulate it. This hack works only for the bugdoc
     954                 :            :                             given in the issue, where the sheet substreams
     955                 :            :                             start directly after the EXTSST record. A future
     956                 :            :                             implementation should be more robust against
     957                 :            :                             missing EOFs. */
     958 [ +  + ][ +  - ]:        132 :                         if( (nRecId == EXC_ID_EOF) ||
         [ -  + ][ +  + ]
     959         [ +  - ]:         40 :                             ((nRecId == EXC_ID_EXTSST) && (maStrm.GetNextRecId() == EXC_ID5_BOF)) )
     960                 :            :                         {
     961                 :         52 :                             eAkt = EXC_STATE_GLOBALS;
     962         [ +  - ]:         52 :                             aIn.SeekGlobalPosition();
     963                 :            :                         }
     964                 :         92 :                         break;
     965         [ +  - ]:         28 :                     case 0x12:  DocProtect(); break;    // PROTECT      [    5678]
     966         [ +  - ]:         28 :                     case 0x13:  DocPasssword(); break;
     967         [ +  - ]:         28 :                     case 0x19:  WinProtection(); break;
     968                 :            :                     case 0x2F:                          // FILEPASS     [ 2345   ]
     969         [ #  # ]:          0 :                         eLastErr = XclImpDecryptHelper::ReadFilepass( maStrm );
     970         [ #  # ]:          0 :                         if( eLastErr != ERRCODE_NONE )
     971                 :          0 :                             eAkt = EXC_STATE_END;
     972                 :          0 :                         break;
     973         [ #  # ]:          0 :                     case EXC_ID_FILESHARING: ReadFileSharing();         break;
     974         [ +  - ]:         49 :                     case 0x3D:  Window1(); break;
     975         [ +  - ]:         49 :                     case 0x42:  Codepage(); break;      // CODEPAGE     [ 2345   ]
     976         [ +  - ]:        165 :                     case 0x85:  Boundsheet(); break;    // BOUNDSHEET   [    5   ]
     977         [ +  - ]:         46 :                     case 0x8C:  Country(); break;       // COUNTRY      [  345   ]
     978                 :            : 
     979                 :            :                     // PALETTE follows XFs, but already needed while reading the XFs
     980         [ +  - ]:          6 :                     case EXC_ID_PALETTE:        rPal.ReadPalette( maStrm );             break;
     981                 :            :                 }
     982                 :            :             }
     983                 :       7159 :             break;
     984                 :            : 
     985                 :            :             // ----------------------------------------------------------------
     986                 :            :             // workbook globals
     987                 :            :             case EXC_STATE_GLOBALS:
     988                 :            :             {
     989   [ +  +  +  -  :       6784 :                 switch( nRecId )
          +  +  -  +  +  
          +  +  +  +  +  
          +  +  +  +  -  
          -  -  +  +  +  
                +  -  + ]
     990                 :            :                 {
     991                 :            :                     case EXC_ID_EOF:
     992                 :            :                     case EXC_ID_EXTSST:
     993                 :            :                         /*  #i56376# evil hack: if EOF for globals is missing,
     994                 :            :                             simulate it. This hack works only for the bugdoc
     995                 :            :                             given in the issue, where the sheet substreams
     996                 :            :                             start directly after the EXTSST record. A future
     997                 :            :                             implementation should be more robust against
     998                 :            :                             missing EOFs. */
     999 [ +  + ][ +  - ]:        132 :                         if( (nRecId == EXC_ID_EOF) ||
         [ -  + ][ +  + ]
    1000         [ +  - ]:         40 :                             ((nRecId == EXC_ID_EXTSST) && (maStrm.GetNextRecId() == EXC_ID5_BOF)) )
    1001                 :            :                         {
    1002         [ +  - ]:         52 :                             rNumFmtBfr.CreateScFormats();
    1003         [ +  - ]:         52 :                             rXFBfr.CreateUserStyles();
    1004         [ +  - ]:         52 :                             rPTableMgr.ReadPivotCaches( maStrm );
    1005         [ +  - ]:         52 :                             rNameMgr.ConvertAllTokens();
    1006                 :         52 :                             eAkt = EXC_STATE_BEFORE_SHEET;
    1007                 :            :                         }
    1008                 :         92 :                     break;
    1009         [ +  - ]:         46 :                     case 0x0E:  Precision(); break;     // PRECISION
    1010         [ +  - ]:         49 :                     case 0x22:  Rec1904(); break;       // 1904         [ 2345   ]
    1011         [ #  # ]:          0 :                     case 0x56:  Builtinfmtcnt(); break; // BUILTINFMTCNT[  34    ]
    1012         [ +  - ]:         49 :                     case 0x8D:  Hideobj(); break;       // HIDEOBJ      [  345   ]
    1013                 :         13 :                     case 0xD3:  SetHasBasic(); break;
    1014         [ #  # ]:          0 :                     case 0xDE:  Olesize(); break;
    1015                 :            : 
    1016         [ +  - ]:         13 :                     case EXC_ID_CODENAME:       ReadCodeName( aIn, true );          break;
    1017         [ +  - ]:         46 :                     case EXC_ID_USESELFS:       ReadUsesElfs();                     break;
    1018                 :            : 
    1019         [ +  - ]:        651 :                     case EXC_ID2_FONT:          rFontBfr.ReadFont( maStrm );        break;
    1020         [ +  - ]:        405 :                     case EXC_ID4_FORMAT:        rNumFmtBfr.ReadFormat( maStrm );    break;
    1021         [ +  - ]:       2017 :                     case EXC_ID5_XF:            rXFBfr.ReadXF( maStrm );            break;
    1022         [ +  - ]:        908 :                     case EXC_ID_STYLE:          rXFBfr.ReadStyle( maStrm );         break;
    1023                 :            : 
    1024         [ +  - ]:         43 :                     case EXC_ID_SST:            rSst.ReadSst( maStrm );             break;
    1025         [ +  - ]:         46 :                     case EXC_ID_TABID:          rTabInfo.ReadTabid( maStrm );       break;
    1026         [ +  - ]:         66 :                     case EXC_ID_NAME:           rNameMgr.ReadName( maStrm );        break;
    1027                 :            : 
    1028         [ +  - ]:         25 :                     case EXC_ID_EXTERNSHEET:    rLinkMgr.ReadExternsheet( maStrm ); break;
    1029         [ +  - ]:         25 :                     case EXC_ID_SUPBOOK:        rLinkMgr.ReadSupbook( maStrm );     break;
    1030         [ #  # ]:          0 :                     case EXC_ID_XCT:            rLinkMgr.ReadXct( maStrm );         break;
    1031         [ #  # ]:          0 :                     case EXC_ID_CRN:            rLinkMgr.ReadCrn( maStrm );         break;
    1032         [ #  # ]:          0 :                     case EXC_ID_EXTERNNAME:     rLinkMgr.ReadExternname( maStrm, pFormConv );  break;
    1033                 :            : 
    1034         [ +  - ]:         29 :                     case EXC_ID_MSODRAWINGGROUP:rObjMgr.ReadMsoDrawingGroup( maStrm ); break;
    1035                 :            : 
    1036         [ +  - ]:          3 :                     case EXC_ID_SXIDSTM:        rPTableMgr.ReadSxidstm( maStrm );   break;
    1037         [ +  - ]:          3 :                     case EXC_ID_SXVS:           rPTableMgr.ReadSxvs( maStrm );      break;
    1038         [ +  - ]:          3 :                     case EXC_ID_DCONREF:        rPTableMgr.ReadDconref( maStrm );   break;
    1039         [ #  # ]:          0 :                     case EXC_ID_DCONNAME:       rPTableMgr.ReadDConName( maStrm );  break;
    1040                 :            :                 }
    1041                 :            : 
    1042                 :            :             }
    1043                 :       6784 :             break;
    1044                 :            : 
    1045                 :            :             // ----------------------------------------------------------------
    1046                 :            :             // before worksheet: wait for new worksheet BOF
    1047                 :            :             case EXC_STATE_BEFORE_SHEET:
    1048                 :            :             {
    1049         [ +  - ]:        165 :                 if( nRecId == EXC_ID5_BOF )
    1050                 :            :                 {
    1051                 :            :                     // import only 256 sheets
    1052         [ -  + ]:        165 :                     if( GetCurrScTab() > GetScMaxPos().Tab() )
    1053                 :            :                     {
    1054         [ #  # ]:          0 :                         XclTools::SkipSubStream( maStrm );
    1055                 :            :                         // #i29930# show warning box
    1056 [ #  # ][ #  # ]:          0 :                         GetAddressConverter().CheckScTab( GetCurrScTab(), true );
    1057                 :          0 :                         eAkt = EXC_STATE_END;
    1058                 :            :                     }
    1059                 :            :                     else
    1060                 :            :                     {
    1061         [ +  - ]:        165 :                         Bof5();
    1062         [ +  - ]:        165 :                         NeueTabelle();
    1063      [ +  -  - ]:        165 :                         switch( pExcRoot->eDateiTyp )
    1064                 :            :                         {
    1065                 :            :                             case Biff8:     // worksheet
    1066                 :            :                             case Biff8M4:   // macro sheet
    1067                 :        165 :                                 eAkt = EXC_STATE_SHEET_PRE;  // Shrfmla Prefetch, Row-Prefetch
    1068         [ +  - ]:        165 :                                 aIn.StoreGlobalPosition();
    1069                 :        165 :                             break;
    1070                 :            :                             case Biff8C:    // chart sheet
    1071 [ #  # ][ #  # ]:          0 :                                 GetCurrSheetDrawing().ReadTabChart( maStrm );
    1072         [ #  # ]:          0 :                                 Eof();
    1073 [ #  # ][ #  # ]:          0 :                                 GetTracer().TraceChartOnlySheet();
    1074                 :          0 :                             break;
    1075                 :            :                             case Biff8W:    // workbook
    1076                 :            :                                 OSL_FAIL( "ImportExcel8::Read - double workbook globals" );
    1077                 :            :                                 // run through
    1078                 :            :                             case Biff8V:    // VB module
    1079                 :            :                             default:
    1080                 :            :                                 // TODO: do not create a sheet in the Calc document
    1081         [ #  # ]:          0 :                                 pD->SetVisible( GetCurrScTab(), false );
    1082         [ #  # ]:          0 :                                 XclTools::SkipSubStream( maStrm );
    1083                 :        165 :                                 IncCurrScTab();
    1084                 :            :                         }
    1085                 :            :                     }
    1086                 :            :                 }
    1087                 :            :             }
    1088                 :        165 :             break;
    1089                 :            : 
    1090                 :            :             // ----------------------------------------------------------------
    1091                 :            :             // prefetch for worksheet
    1092                 :            :             case EXC_STATE_SHEET_PRE:
    1093                 :            :             {
    1094   [ +  +  +  +  :      15832 :                 switch( nRecId )
          +  +  +  +  +  
          +  -  +  +  +  
          -  -  +  +  +  
          +  +  +  -  +  
                      + ]
    1095                 :            :                 {
    1096                 :            :                     // skip chart substream
    1097                 :            :                     case EXC_ID2_BOF:
    1098                 :            :                     case EXC_ID3_BOF:
    1099                 :            :                     case EXC_ID4_BOF:
    1100         [ +  - ]:          6 :                     case EXC_ID5_BOF:           XclTools::SkipSubStream( maStrm );      break;
    1101                 :            : 
    1102         [ +  - ]:        165 :                     case EXC_ID_WINDOW2:        rTabViewSett.ReadWindow2( maStrm, false );break;
    1103         [ +  - ]:          3 :                     case EXC_ID_SCL:            rTabViewSett.ReadScl( maStrm );         break;
    1104         [ +  - ]:          3 :                     case EXC_ID_PANE:           rTabViewSett.ReadPane( maStrm );        break;
    1105         [ +  - ]:        165 :                     case EXC_ID_SELECTION:      rTabViewSett.ReadSelection( maStrm );   break;
    1106                 :            : 
    1107                 :            :                     case EXC_ID2_DIMENSIONS:
    1108         [ +  - ]:        165 :                     case EXC_ID3_DIMENSIONS:    ReadDimensions();                       break;
    1109                 :            : 
    1110         [ +  - ]:         42 :                     case EXC_ID_CODENAME:       ReadCodeName( aIn, false ); bSheetHasCodeName = true; break;
    1111                 :            : 
    1112                 :            :                     case 0x0A:                          // EOF          [ 2345   ]
    1113                 :            :                     {
    1114                 :        165 :                         eAkt = EXC_STATE_SHEET;
    1115                 :        165 :                         rtl::OUString sName;
    1116         [ +  - ]:        165 :                         GetDoc().GetName( GetCurrScTab(), sName );
    1117         [ +  + ]:        165 :                         if ( !bSheetHasCodeName )
    1118                 :            :                         {
    1119         [ +  - ]:        123 :                             nTabsWithNoCodeName.push_back( GetCurrScTab() );
    1120                 :            :                             OSL_TRACE("No Codename for %d", GetCurrScTab() );
    1121                 :            :                         }
    1122                 :            :                         else
    1123                 :            :                         {
    1124                 :         42 :                             rtl::OUString sCodeName;
    1125         [ +  - ]:         42 :                             GetDoc().GetCodeName( GetCurrScTab(), sCodeName );
    1126                 :            :                             OSL_TRACE("Have CodeName %s for SheetName %s",
    1127                 :            :                                 rtl::OUStringToOString( sCodeName, RTL_TEXTENCODING_UTF8 ).getStr(),  rtl::OUStringToOString( sName, RTL_TEXTENCODING_UTF8 ).getStr() );
    1128         [ +  - ]:         42 :                             aCodeNames.push_back( sCodeName );
    1129                 :            :                         }
    1130                 :            : 
    1131                 :        165 :                         bSheetHasCodeName = false; // reset
    1132                 :            : 
    1133         [ +  - ]:        165 :                         aIn.SeekGlobalPosition();         // und zurueck an alte Position
    1134                 :        165 :                         break;
    1135                 :            :                     }
    1136         [ +  - ]:         36 :                     case 0x12:  SheetProtect(); break;
    1137         [ +  - ]:          3 :                     case 0x13:  SheetPassword(); break;
    1138         [ #  # ]:          0 :                     case 0x42:  Codepage(); break;      // CODEPAGE     [ 2345   ]
    1139         [ +  - ]:        162 :                     case 0x55:  DefColWidth(); break;
    1140         [ +  - ]:        291 :                     case 0x7D:  Colinfo(); break;       // COLINFO      [  345   ]
    1141         [ +  - ]:        165 :                     case 0x81:  Wsbool(); break;        // WSBOOL       [ 2345   ]
    1142         [ #  # ]:          0 :                     case 0x8C:  Country(); break;       // COUNTRY      [  345   ]
    1143         [ #  # ]:          0 :                     case 0x99:  Standardwidth(); break; // STANDARDWIDTH[   45   ]
    1144         [ +  - ]:         15 :                     case 0x9B:  FilterMode(); break;    // FILTERMODE
    1145         [ +  - ]:         18 :                     case EXC_ID_AUTOFILTERINFO: AutoFilterInfo(); break;// AUTOFILTERINFO
    1146         [ +  - ]:         15 :                     case EXC_ID_AUTOFILTER: AutoFilter(); break;    // AUTOFILTER
    1147         [ +  - ]:       3255 :                     case 0x0208: Row34(); break;        // ROW          [  34    ]
    1148                 :            :                     case EXC_ID2_ARRAY:
    1149         [ +  - ]:          6 :                     case EXC_ID3_ARRAY: Array34(); break;      // ARRAY        [  34    ]
    1150         [ +  - ]:        165 :                     case 0x0225: Defrowheight345();break;//DEFAULTROWHEI[  345   ]
    1151         [ #  # ]:          0 :                     case 0x04BC: Shrfmla(); break;      // SHRFMLA      [    5   ]
    1152         [ +  - ]:         90 :                     case 0x0867: SheetProtection(); break; // SHEETPROTECTION
    1153                 :            :                 }
    1154                 :            :             }
    1155                 :      15832 :             break;
    1156                 :            : 
    1157                 :            :             // ----------------------------------------------------------------
    1158                 :            :             // worksheet
    1159                 :            :             case EXC_STATE_SHEET:
    1160                 :            :             {
    1161   [ -  +  +  -  :      15548 :                 switch( nRecId )
          +  -  -  +  +  
          +  +  +  -  -  
          +  +  -  +  +  
          -  +  +  +  +  
          +  +  +  -  +  
          -  +  +  -  -  
          -  +  +  -  -  
          -  -  -  +  +  
          +  +  -  -  +  
             +  -  +  + ]
    1162                 :            :                 {
    1163                 :            :                     // skip unknown substreams
    1164                 :            :                     case EXC_ID2_BOF:
    1165                 :            :                     case EXC_ID3_BOF:
    1166                 :            :                     case EXC_ID4_BOF:
    1167         [ #  # ]:          0 :                     case EXC_ID5_BOF:           XclTools::SkipSubStream( maStrm );      break;
    1168                 :            : 
    1169         [ +  - ]:        165 :                     case EXC_ID_EOF:            Eof(); eAkt = EXC_STATE_BEFORE_SHEET;   break;
    1170                 :            : 
    1171                 :            :                     case EXC_ID2_BLANK:
    1172         [ +  - ]:        238 :                     case EXC_ID3_BLANK:         ReadBlank();            break;
    1173         [ #  # ]:          0 :                     case EXC_ID2_INTEGER:       ReadInteger();          break;
    1174                 :            :                     case EXC_ID2_NUMBER:
    1175         [ +  - ]:        243 :                     case EXC_ID3_NUMBER:        ReadNumber();           break;
    1176                 :            :                     case EXC_ID2_LABEL:
    1177         [ #  # ]:          0 :                     case EXC_ID3_LABEL:         ReadLabel();            break;
    1178                 :            :                     case EXC_ID2_BOOLERR:
    1179         [ #  # ]:          0 :                     case EXC_ID3_BOOLERR:       ReadBoolErr();          break;
    1180         [ +  - ]:       1964 :                     case EXC_ID_RK:             ReadRk();               break;
    1181                 :            : 
    1182                 :            :                     case EXC_ID2_FORMULA:
    1183                 :            :                     case EXC_ID3_FORMULA:
    1184         [ +  - ]:       1773 :                     case EXC_ID4_FORMULA:       Formula25();            break;
    1185         [ +  - ]:        162 :                     case 0x000C:    Calccount();            break;  // CALCCOUNT
    1186         [ +  - ]:        162 :                     case 0x0010:    Delta();                break;  // DELTA
    1187         [ +  - ]:        162 :                     case 0x0011:    Iteration();            break;  // ITERATION
    1188                 :            :                     case 0x007E:
    1189         [ #  # ]:          0 :                     case 0x00AE:    Scenman();              break;  // SCENMAN
    1190         [ #  # ]:          0 :                     case 0x00AF:    Scenario();             break;  // SCENARIO
    1191         [ +  - ]:        426 :                     case 0x00BD:    Mulrk();                break;  // MULRK        [    5   ]
    1192         [ +  - ]:        330 :                     case 0x00BE:    Mulblank();             break;  // MULBLANK     [    5   ]
    1193         [ #  # ]:          0 :                     case 0x00D6:    Rstring();              break;  // RSTRING      [    5   ]
    1194         [ +  - ]:         30 :                     case 0x00E5:    Cellmerging();          break;  // CELLMERGING
    1195         [ +  - ]:       2100 :                     case 0x00FD:    Labelsst();             break;  // LABELSST     [      8 ]
    1196         [ #  # ]:          0 :                     case 0x0236:    TableOp();              break;  // TABLE
    1197                 :            : 
    1198                 :            :                     case EXC_ID_HORPAGEBREAKS:
    1199         [ +  - ]:          6 :                     case EXC_ID_VERPAGEBREAKS:  rPageSett.ReadPageBreaks( maStrm );     break;
    1200                 :            :                     case EXC_ID_HEADER:
    1201         [ +  - ]:        330 :                     case EXC_ID_FOOTER:         rPageSett.ReadHeaderFooter( maStrm );   break;
    1202                 :            :                     case EXC_ID_LEFTMARGIN:
    1203                 :            :                     case EXC_ID_RIGHTMARGIN:
    1204                 :            :                     case EXC_ID_TOPMARGIN:
    1205         [ +  - ]:        336 :                     case EXC_ID_BOTTOMMARGIN:   rPageSett.ReadMargin( maStrm );         break;
    1206         [ +  - ]:        165 :                     case EXC_ID_PRINTHEADERS:   rPageSett.ReadPrintHeaders( maStrm );   break;
    1207         [ +  - ]:        165 :                     case EXC_ID_PRINTGRIDLINES: rPageSett.ReadPrintGridLines( maStrm ); break;
    1208                 :            :                     case EXC_ID_HCENTER:
    1209         [ +  - ]:        330 :                     case EXC_ID_VCENTER:        rPageSett.ReadCenter( maStrm );         break;
    1210         [ +  - ]:        165 :                     case EXC_ID_SETUP:          rPageSett.ReadSetup( maStrm );          break;
    1211         [ #  # ]:          0 :                     case EXC_ID8_IMGDATA:       rPageSett.ReadImgData( maStrm );        break;
    1212                 :            : 
    1213 [ +  - ][ +  - ]:         86 :                     case EXC_ID_MSODRAWING:     GetCurrSheetDrawing().ReadMsoDrawing( maStrm ); break;
    1214                 :            :                     // #i61786# weird documents: OBJ without MSODRAWING -> read in BIFF5 format
    1215 [ #  # ][ #  # ]:          0 :                     case EXC_ID_OBJ:            GetCurrSheetDrawing().ReadObj( maStrm ); break;
    1216 [ +  - ][ +  - ]:          3 :                     case EXC_ID_NOTE:           GetCurrSheetDrawing().ReadNote( maStrm ); break;
    1217                 :            : 
    1218         [ +  - ]:         24 :                     case EXC_ID_HLINK:          XclImpHyperlink::ReadHlink( maStrm );   break;
    1219         [ #  # ]:          0 :                     case EXC_ID_LABELRANGES:    XclImpLabelranges::ReadLabelranges( maStrm ); break;
    1220                 :            : 
    1221         [ #  # ]:          0 :                     case EXC_ID_CONDFMT:        rCondFmtMgr.ReadCondfmt( maStrm );      break;
    1222         [ #  # ]:          0 :                     case EXC_ID_CF:             rCondFmtMgr.ReadCF( maStrm );           break;
    1223                 :            : 
    1224         [ +  - ]:          6 :                     case EXC_ID_DVAL:           rValidMgr.ReadDval( maStrm );           break;
    1225         [ +  - ]:          3 :                     case EXC_ID_DV:             rValidMgr.ReadDV( maStrm );             break;
    1226                 :            : 
    1227         [ #  # ]:          0 :                     case EXC_ID_QSI:            rWQBfr.ReadQsi( maStrm );               break;
    1228         [ #  # ]:          0 :                     case EXC_ID_WQSTRING:       rWQBfr.ReadWqstring( maStrm );          break;
    1229         [ #  # ]:          0 :                     case EXC_ID_PQRY:           rWQBfr.ReadParamqry( maStrm );          break;
    1230         [ #  # ]:          0 :                     case EXC_ID_WQSETT:         rWQBfr.ReadWqsettings( maStrm );        break;
    1231         [ #  # ]:          0 :                     case EXC_ID_WQTABLES:       rWQBfr.ReadWqtables( maStrm );          break;
    1232                 :            : 
    1233         [ +  - ]:          3 :                     case EXC_ID_SXVIEW:         rPTableMgr.ReadSxview( maStrm );    break;
    1234         [ +  - ]:          6 :                     case EXC_ID_SXVD:           rPTableMgr.ReadSxvd( maStrm );      break;
    1235         [ +  - ]:         18 :                     case EXC_ID_SXVI:           rPTableMgr.ReadSxvi( maStrm );      break;
    1236         [ +  - ]:          3 :                     case EXC_ID_SXIVD:          rPTableMgr.ReadSxivd( maStrm );     break;
    1237         [ #  # ]:          0 :                     case EXC_ID_SXPI:           rPTableMgr.ReadSxpi( maStrm );      break;
    1238         [ #  # ]:          0 :                     case EXC_ID_SXDI:           rPTableMgr.ReadSxdi( maStrm );      break;
    1239         [ +  - ]:          6 :                     case EXC_ID_SXVDEX:         rPTableMgr.ReadSxvdex( maStrm );    break;
    1240         [ +  - ]:          3 :                     case EXC_ID_SXEX:           rPTableMgr.ReadSxex( maStrm );      break;
    1241         [ #  # ]:          0 :                     case EXC_ID_SHEETEXT:       rTabViewSett.ReadTabBgColor( maStrm, rPal );    break;
    1242         [ +  - ]:          3 :                     case EXC_ID_SXVIEWEX9:      rPTableMgr.ReadSxViewEx9( maStrm ); break;
    1243                 :            :                 }
    1244                 :            :             }
    1245                 :      45558 :             break;
    1246                 :            : 
    1247                 :            :             // ----------------------------------------------------------------
    1248                 :            :             default:;
    1249                 :            :         }
    1250                 :            :     }
    1251                 :            : 
    1252         [ +  - ]:         55 :     if( eLastErr == eERR_OK )
    1253                 :            :     {
    1254                 :            :         // In some strange circumstances a the codename might be missing
    1255                 :            :         // # Create any missing Sheet CodeNames
    1256                 :         55 :         std::vector < SCTAB >::iterator it_end = nTabsWithNoCodeName.end();
    1257 [ +  - ][ +  - ]:        178 :         for ( std::vector < SCTAB >::iterator it = nTabsWithNoCodeName.begin(); it != it_end; ++it )
                 [ +  + ]
    1258                 :            :         {
    1259                 :        123 :             SCTAB nTab = 1;
    1260                 :            :             OSL_TRACE("Trying to find suitable codename for %d", *it );
    1261                 :        273 :             while ( true )
    1262                 :            :             {
    1263                 :        396 :                 rtl::OUStringBuffer aBuf;
    1264         [ +  - ]:        396 :                 aBuf.appendAscii("Sheet");
    1265         [ +  - ]:        396 :                 aBuf.append(static_cast<sal_Int32>(nTab++));
    1266         [ +  - ]:        396 :                 rtl::OUString sTmpName = aBuf.makeStringAndClear();
    1267                 :        396 :                 std::vector<rtl::OUString>::iterator codeName_It = aCodeNames.begin();
    1268                 :        396 :                 std::vector<rtl::OUString>::iterator codeName_It_end = aCodeNames.end();
    1269                 :            :                 // search for codename
    1270 [ +  - ][ +  + ]:       1860 :                 for ( ; codeName_It != codeName_It_end; ++codeName_It )
    1271                 :            :                 {
    1272         [ +  + ]:       1737 :                     if ( *codeName_It == sTmpName )
    1273                 :        273 :                         break;
    1274                 :            :                 }
    1275                 :            : 
    1276 [ +  - ][ +  + ]:        396 :                 if ( codeName_It == codeName_It_end ) // generated codename not found
    1277                 :            :                 {
    1278                 :            :                     OSL_TRACE("Using generated codename %s", rtl::OUStringToOString( sTmpName, RTL_TEXTENCODING_UTF8 ).getStr() );
    1279                 :            :                     // Set new codename
    1280 [ +  - ][ +  - ]:        123 :                     GetDoc().SetCodeName( *it, sTmpName );
    1281                 :            :                     // Record newly used codename
    1282         [ +  - ]:        123 :                     aCodeNames.push_back(sTmpName);
    1283                 :            :                     // Record those we have created so they can be created in
    1284                 :            :                     // basic
    1285         [ +  - ]:        396 :                     maAutoGeneratedCodeNames.push_back( sTmpName );
    1286                 :            :                     break;
    1287                 :            :                 }
    1288 [ +  + ][ +  + ]:        396 :             }
    1289                 :            : 
    1290                 :            :         }
    1291                 :            :         // #i45843# Convert pivot tables before calculation, so they are available
    1292                 :            :         // for the GETPIVOTDATA function.
    1293         [ +  - ]:         55 :         if( GetBiff() == EXC_BIFF8 )
    1294 [ +  - ][ +  - ]:         55 :             GetPivotTableManager().ConvertPivotTables();
    1295                 :            : 
    1296                 :         55 :         pProgress.reset();
    1297                 :            : #if 0
    1298                 :            :         // Excel documents look much better without this call; better in the
    1299                 :            :         // sense that the row heights are identical to the original heights in
    1300                 :            :         // Excel.
    1301                 :            :         if (pD->IsAdjustHeightEnabled())
    1302                 :            :             AdjustRowHeight();
    1303                 :            : #endif
    1304         [ +  - ]:         55 :         PostDocLoad();
    1305                 :            : 
    1306         [ +  - ]:         55 :         pD->CalcAfterLoad();
    1307                 :            : 
    1308                 :            :         // import change tracking data
    1309         [ +  - ]:         55 :         XclImpChangeTrack aImpChTr( GetRoot(), maStrm );
    1310         [ +  - ]:         55 :         aImpChTr.Apply();
    1311                 :            : 
    1312         [ +  - ]:         55 :         const XclImpAddressConverter& rAddrConv = GetAddressConverter();
    1313         [ -  + ]:         55 :         if( rAddrConv.IsTabTruncated() )
    1314                 :          0 :             eLastErr = SCWARN_IMPORT_SHEET_OVERFLOW;
    1315 [ +  - ][ -  + ]:         55 :         else if( bTabTruncated || rAddrConv.IsRowTruncated() )
                 [ -  + ]
    1316                 :          0 :             eLastErr = SCWARN_IMPORT_ROW_OVERFLOW;
    1317         [ -  + ]:         55 :         else if( rAddrConv.IsColTruncated() )
    1318                 :          0 :             eLastErr = SCWARN_IMPORT_COLUMN_OVERFLOW;
    1319                 :            : 
    1320         [ +  - ]:         55 :         if( GetBiff() == EXC_BIFF8 )
    1321 [ +  - ][ +  - ]:         55 :             GetPivotTableManager().MaybeRefreshPivotTables();
                 [ +  - ]
    1322                 :            :     }
    1323                 :            : 
    1324         [ +  - ]:         55 :     return eLastErr;
    1325 [ +  - ][ +  - ]:         24 : }
    1326                 :            : 
    1327                 :            : //___________________________________________________________________
    1328                 :            : 
    1329                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10