diff options
Diffstat (limited to 'sc/source/filter/oox/sheetdatabuffer.cxx')
-rw-r--r-- | sc/source/filter/oox/sheetdatabuffer.cxx | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/sc/source/filter/oox/sheetdatabuffer.cxx b/sc/source/filter/oox/sheetdatabuffer.cxx index 4421c3222a17..d4d0ad87affd 100644 --- a/sc/source/filter/oox/sheetdatabuffer.cxx +++ b/sc/source/filter/oox/sheetdatabuffer.cxx @@ -442,9 +442,22 @@ void SheetDataBuffer::addColXfStyleProcessRowRanges() void SheetDataBuffer::finalizeImport() { + ScDocumentImport& rDocImport = getDocImport(); + + SCTAB nStartTabInvalidatedIters(SCTAB_MAX); + SCTAB nEndTabInvalidatedIters(0); + // create all array formulas for( const auto& [rRange, rTokens] : maArrayFormulas ) - finalizeArrayFormula( rRange, rTokens ); + { + finalizeArrayFormula(rRange, rTokens); + + nStartTabInvalidatedIters = std::min(rRange.aStart.Tab(), nStartTabInvalidatedIters); + nEndTabInvalidatedIters = std::max(rRange.aEnd.Tab(), nEndTabInvalidatedIters); + } + + for (SCTAB nTab = nStartTabInvalidatedIters; nTab <= nEndTabInvalidatedIters; ++nTab) + rDocImport.invalidateBlockPositionSet(nTab); // create all table operations for( const auto& [rRange, rModel] : maTableOperations ) @@ -457,7 +470,6 @@ void SheetDataBuffer::finalizeImport() addColXfStyleProcessRowRanges(); - ScDocumentImport& rDocImport = getDocImport(); ScDocument& rDoc = rDocImport.getDoc(); StylesBuffer& rStyles = getStyles(); for ( const auto& [rCol, rRowStyles] : maStylesPerColumn ) |