11 #include <document.hxx>
15 #include <tokenarray.hxx>
61 SCTAB nClipTabCount = rClipTabs.size();
72 while (!rClipTabs[nClipTab])
73 nClipTab = (nClipTab+1) % nClipTabCount;
77 nClipTab = (nClipTab+1) % nClipTabCount;
95 SCCOL nDestColSize = nCol2 - nCol1 + 1;
96 if (nDestColSize < nSrcColSize)
99 if (pClipDoc->
maTabs.size() > 1)
120 for (
SCCOL nColOffset = 0; nColOffset < nSrcColSize; ++nColOffset, aSrcPos.
IncCol())
139 maTabs[
i]->CopyOneCellFromClip(rCxt, nCol1, nRow1, nCol2, nRow2, aClipRange.
aStart.
Row(), pSrcTab);
183 std::set<Color> aDocColors;
186 for (sal_uInt16 nAttrib : pAttribs)
193 aDocColors.insert(aColor);
229 auto pPosSet = std::make_shared<sc::ColumnBlockPositionSet>(*this);
253 std::map<OUString, ScRangeName*> aRangeNameMap;
255 for (
const auto& itTab : aRangeNameMap)
261 const auto& itNewTab( rRangeMap.find( itTab.first));
262 if (itNewTab == rRangeMap.end())
265 const ScRangeName* pNewRangeNames = itNewTab->second.get();
269 for (
const auto& rEntry : *pOldRangeNames)
284 for (
const auto& rxTab :
maTabs)
296 for (
const auto& rxTab :
maTabs)
308 for (
const auto& rxTab :
maTabs)
319 for (
const auto& rxTab :
maTabs)
409 if( it->second.first != -1 )
411 auto pPosSet = std::make_shared<sc::ColumnBlockPositionSet>(*this);
431 if( it->second.first == -1 && it->second.second == -1 )
435 if( row1 > it->second.second + 1 || row2 < it->second.first - 1 )
439 it->second.first = std::min( it->second.first, row1 );
440 it->second.second = std::max( it->second.second, row2 );
517 class StartNeededListenersHandler
519 std::shared_ptr<sc::StartListeningContext> mpCxt;
522 explicit StartNeededListenersHandler(
ScDocument& rDoc,
const std::shared_ptr<const sc::ColumnSet>& rpColSet ) :
525 mpCxt->setColumnSet( rpColSet);
531 p->StartListeners(*mpCxt,
false);
539 std::for_each(
maTabs.begin(),
maTabs.end(), StartNeededListenersHandler(*
this));
544 std::for_each(
maTabs.begin(),
maTabs.end(), StartNeededListenersHandler(*
this, rpColSet));
552 auto pPosSet = std::make_shared<sc::ColumnBlockPositionSet>(*this);
570 for (
const auto& rxTab :
maTabs)
578 SCTAB nTokenTab,
const sal_uInt16 nTokenIndex,
580 bool bSameDoc,
int nRecursion)
const
584 SAL_WARN(
"sc.core",
"ScDocument::FindRangeNamesReferencingSheet - nTokenTab < -1 : " <<
585 nTokenTab <<
", nTokenIndex " << nTokenIndex <<
" Fix the creator!");
586 #if OSL_DEBUG_LEVEL > 0
588 SAL_WARN_IF( pData,
"sc.core",
"ScDocument::FindRangeNamesReferencingSheet - named expression is: " << pData->
GetName());
592 SCTAB nRefTab = nGlobalRefTab;
593 if (nTokenTab == nOldTokenTab)
595 nTokenTab = nOldTokenTabReplacement;
596 nRefTab = nLocalRefTab;
598 else if (nTokenTab == nOldTokenTabReplacement)
600 nRefTab = nLocalRefTab;
614 bool bRef = !bSameDoc;
615 if (nRecursion < 126)
623 nGlobalRefTab, nLocalRefTab, nOldTokenTab, nOldTokenTabReplacement, bSameDoc, nRecursion+1);
631 if (nPosTab == nOldTokenTab)
632 nPosTab = nOldTokenTabReplacement;
661 return MightReferenceSheet::NAME;
670 SCTAB nOldSheet,
const SCTAB nNewSheet,
bool bSameDoc)
674 aRangePos.
SetTab( nNewSheet);
678 if (bSameDoc && nNewSheet >= 0)
680 if (bGlobalNamesToLocal && nOldSheet < 0)
682 nOldSheet = rOldPos.
Tab();
683 if (rNewPos.
Tab() <= nOldSheet)
701 return bInserted ? pRangeData :
nullptr;
709 SheetIndex(
SCTAB nSheet, sal_uInt16 nIndex ) : mnSheet(nSheet < -1 ? -1 : nSheet), mnIndex(nIndex) {}
710 bool operator<(
const SheetIndex& r )
const
713 if (mnSheet < r.mnSheet)
715 if (mnSheet == r.mnSheet)
716 return mnIndex < r.mnIndex;
720 typedef std::map< SheetIndex, SheetIndex > SheetIndexMap;
722 ScRangeData* copyRangeNames( SheetIndexMap& rSheetIndexMap, std::vector<ScRangeData*>& rRangeDataVec,
726 const SCTAB nOldSheet,
const SCTAB nNewSheet,
bool bSameDoc)
734 for (
auto const & rIndex : aSet)
743 if (pCopyData == pOldRangeData)
745 pRangeData = copyRangeName( pCopyData, rNewDoc, rOldDoc, rNewPos, rOldPos,
746 bGlobalNamesToLocal, nOldSheet, nNewSheet, bSameDoc);
749 rRangeDataVec.push_back(pRangeData);
750 rSheetIndexMap.insert( std::make_pair( SheetIndex( nOldSheet, pCopyData->
GetIndex()),
751 SheetIndex( nNewSheet, pRangeData->
GetIndex())));
761 rSheetIndexMap.insert( std::make_pair( SheetIndex( nOldSheet, pCopyData->
GetIndex()),
762 SheetIndex( nNewSheet, pFoundData->
GetIndex())));
766 ScRangeData* pTmpData = copyRangeName( pCopyData, rNewDoc, rOldDoc, rNewPos, rOldPos,
767 bGlobalNamesToLocal, nOldSheet, nNewSheet, bSameDoc);
770 rRangeDataVec.push_back(pTmpData);
771 rSheetIndexMap.insert( std::make_pair( SheetIndex( nOldSheet, pCopyData->
GetIndex()),
772 SheetIndex( nNewSheet, pTmpData->
GetIndex())));
786 const bool bUsedByFormula )
const
790 if (bSameDoc && ((rSheet < 0 && !bGlobalNamesToLocal) || (rSheet >= 0
798 const SCTAB nOldSheet = rSheet;
799 const sal_uInt16 nOldIndex = rIndex;
801 SAL_WARN_IF( !bSameDoc && nOldSheet >= 0 && nOldSheet != rOldPos.
Tab(),
802 "sc.core",
"adjustCopyRangeName - sheet-local name was on other sheet in other document");
809 bool bInsertingBefore = (bGlobalNamesToLocal && bSameDoc && rNewPos.
Tab() <= rOldPos.
Tab());
816 SCTAB nOldTab = (nOldSheet < 0 ? rOldPos.
Tab() : nOldSheet);
817 if (bInsertingBefore)
825 pOldRangeData = pNames ? pNames->
findByIndex(nOldIndex) :
nullptr;
848 if (!rpRangeData && !bGlobalNamesToLocal)
860 bool bEarlyBailOut = (nOldSheet < 0 && (bSameDoc || !bUsedByFormula));
861 MightReferenceSheet eMightReference = mightRangeNameReferenceSheet( pOldRangeData, nOldTab);
865 if (eMightReference == MightReferenceSheet::NAME)
868 const SCTAB nGlobalRefTab = nOldTab;
869 const SCTAB nLocalRefTab = (bInsertingBefore ? nOldTab-1 : nOldTab);
870 const SCTAB nOldTokenTab = (nOldSheet < 0 ? (bInsertingBefore ? nOldTab-1 : nOldTab) : nOldSheet);
871 const SCTAB nOldTokenTabReplacement = nOldTab;
874 nGlobalRefTab, nLocalRefTab, nOldTokenTab, nOldTokenTabReplacement, bSameDoc, 0);
875 if (bEarlyBailOut && aReferencingNames.
isEmpty(-1) && aReferencingNames.
isEmpty(nOldTokenTabReplacement))
878 SheetIndexMap aSheetIndexMap;
879 std::vector<ScRangeData*> aRangeDataVec;
880 if (!aReferencingNames.
isEmpty(nOldTokenTabReplacement))
882 const SCTAB nTmpOldSheet = (nOldSheet < 0 ? nOldTab : nOldSheet);
883 nNewSheet = rNewPos.
Tab();
884 rpRangeData = copyRangeNames( aSheetIndexMap, aRangeDataVec, aReferencingNames, nOldTab,
885 pOldRangeData, rNewDoc, *
this, rNewPos, rOldPos,
886 bGlobalNamesToLocal, nTmpOldSheet, nNewSheet, bSameDoc);
888 if ((bGlobalNamesToLocal || !bSameDoc) && !aReferencingNames.
isEmpty(-1))
890 const SCTAB nTmpOldSheet = -1;
891 const SCTAB nTmpNewSheet = (bGlobalNamesToLocal ? rNewPos.
Tab() : -1);
892 ScRangeData* pTmpData = copyRangeNames( aSheetIndexMap, aRangeDataVec, aReferencingNames, -1,
893 pOldRangeData, rNewDoc, *
this, rNewPos, rOldPos,
894 bGlobalNamesToLocal, nTmpOldSheet, nTmpNewSheet, bSameDoc);
897 rpRangeData = pTmpData;
898 nNewSheet = nTmpNewSheet;
903 for (
auto & iRD : aRangeDataVec)
913 auto it = aSheetIndexMap.find( SheetIndex(
p->GetSheet(),
p->GetIndex()));
914 if (it != aSheetIndexMap.end())
916 p->SetSheet( it->second.mnSheet);
917 p->SetIndex( it->second.mnIndex);
921 SAL_WARN(
"sc.core",
"adjustCopyRangeName - mapping to new name in other doc missing");
931 nNewSheet = ((nOldSheet < 0 && !bGlobalNamesToLocal) ? -1 : rNewPos.
Tab());
932 rpRangeData = copyRangeName( pOldRangeData, rNewDoc, *
this, rNewPos, rOldPos, bGlobalNamesToLocal,
933 nOldSheet, nNewSheet, bSameDoc);
945 rIndex = rpRangeData ? rpRangeData->
GetIndex() : 0;
962 return std::all_of(rMark.
begin(), rMark.
end(),
970 return std::unique_ptr<sc::ColumnIterator>();
986 bool bAnyDirty =
false;
995 bAnyDirty = bAnyDirty || bRet;
void AddDelayedFormulaGroupingCell(const ScFormulaCell *cell)
To be used only by SharedFormulaUtil::joinFormulaCells().
ScCalcConfig maCalcConfig
SCROW mnRowDelta
Amount and direction of movement in the row direction.
void TransferCellValuesTo(const SCCOL nCol, SCROW nRow, size_t nLen, sc::CellValues &rDest)
todo: It should be possible to have MarkArrays for each table, in order to enable "search all" across...
bool IsEnabledDelayStartListeningFormulaCells(ScColumn *column) const
SC_DLLPUBLIC ScRangeName * GetRangeName() const
void SetValues(const SCCOL nCol, const SCROW nRow, const std::vector< double > &rVals)
void setSingleCell(const ScAddress &rSrcPos, const ScColumn &rSrcCol)
std::unique_ptr< ContentProperties > pData
ScTable * FetchTable(SCTAB nTab)
void RegroupFormulaCells(SCTAB nTab, SCCOL nCol)
void UpdateScriptTypes(const SCCOL nCol1, SCROW nRow1, const SCCOL nCol2, SCROW nRow2)
const OUString & GetUpperName() const
void purgeEmptyBroadcasters()
bool HasFormulaCell(const SCCOL nCol1, SCROW nRow1, const SCCOL nCol2, SCROW nRow2) const
Think of this as a mini-ScColumn like storage that only stores cell values in a column.
SCROW GetLOKFreezeRow(SCTAB nTab) const
sal_uInt16 GetIndex() const
SC_DLLPUBLIC void CompileHybridFormula()
Call this immediately after updating named ranges.
Context for reference update during shifting, moving or copying of cell ranges.
SC_DLLPUBLIC ScRangeName * GetRangeName(SCTAB nTab) const
InsertDeleteFlags getInsertFlag() const
bool IsClipOrUndo() const
void EndListeningIntersectedGroup(sc::EndListeningContext &rCxt, const ScAddress &rPos, std::vector< ScAddress > *pGroupPos)
Stores cell values for multiple tables.
OString dumpSheetGeomData(SCTAB nTab, bool bColumns, SheetGeomType eGeomType)
Serializes the specified sheet's geometry data.
std::shared_ptr< T > make_shared(Args &&...args)
void ReadjustAbsolute3DReferences(const ScDocument &rOldDoc, ScDocument &rNewDoc, const ScAddress &rPos, bool bRangeName=false)
Make all absolute references external references pointing to the old document.
void CompileHybridFormula(sc::StartListeningContext &rStartListenCxt, sc::CompileFormulaContext &rCompileCxt)
void EndListeningGroups(const std::vector< ScAddress > &rPosArray)
void RestoreFromCache(SvStream &rStrm)
void PreprocessDBDataUpdate(sc::EndListeningContext &rEndListenCxt, sc::CompileFormulaContext &rCompileCxt)
std::unordered_set< sal_uInt16 > NameIndicesType
void setUpdatedName(SCTAB nTab, sal_uInt16 nIndex)
SC_DLLPUBLIC ScDocumentPool * GetPool()
ScColumn & CreateColumnIfNotExists(const SCCOL nScCol) const
constexpr::Color COL_AUTO(0xFF, 0xFF, 0xFF, 0xFF)
bool IsEditActionAllowed(sc::ColRowEditAction eAction, SCCOLROW nStart, SCCOLROW nEnd) const
SC_DLLPUBLIC ScPostIt * GetNote(const ScAddress &rPos)
Notes.
std::unordered_map< ScColumn *, std::pair< SCROW, SCROW > > pDelayedStartListeningFormulaCells
void StartListeningFormulaCells(sc::StartListeningContext &rStartCxt, sc::EndListeningContext &rEndCxt, SCROW nRow1, SCROW nRow2)
ScClipParam & GetClipParam()
void UpdateReference(sc::RefUpdateContext &rCxt, ScDocument *pUndoDoc=nullptr, bool bIncludeDraw=true, bool bUpdateNoteCaptionPos=true)
void finalizeOutlineImport()
sal_Int32 SCCOLROW
a type capable of holding either SCCOL or SCROW
bool isEmpty(SCTAB nTab) const
bool CanDelayStartListeningFormulaCells(ScColumn *column, SCROW row1, SCROW row2)
If true is returned, ScColumn::StartListeningFormulaCells() for the given cells will be performed lat...
SC_DLLPUBLIC void PreprocessAllRangeNamesUpdate(const std::map< OUString, std::unique_ptr< ScRangeName >> &rRangeMap)
Call this immediately before updating all named ranges.
SC_DLLPUBLIC sc::ExternalDataMapper & GetExternalDataMapper()
void ConvertFormulaToValue(sc::EndListeningContext &rCxt, const SCCOL nCol1, const SCROW nRow1, const SCCOL nCol2, const SCROW nRow2, sc::TableValues *pUndo)
void UpdateScriptTypes(const ScAddress &rPos, SCCOL nColSize, SCROW nRowSize)
void PreprocessRangeNameUpdate(sc::EndListeningContext &rEndListenCxt, sc::CompileFormulaContext &rCompileCxt)
void EndListeningIntersectedGroups(sc::EndListeningContext &rCxt, const ScRange &rRange, std::vector< ScAddress > *pGroupPos)
bool isNameUpdated(SCTAB nTab, sal_uInt16 nIndex) const
void CopyCellValuesFrom(const SCCOL nCol, SCROW nRow, const sc::CellValues &rSrc)
void EndListeningIntersectedGroups(sc::EndListeningContext &rCxt, const SCCOL nCol1, SCROW nRow1, const SCCOL nCol2, SCROW nRow2, std::vector< ScAddress > *pGroupPos)
bool HasUniformRowHeight(SCROW nRow1, SCROW nRow2) const
void GetName(OUString &rName) const
void SetNeedsListeningGroup(SCCOL nCol, SCROW nRow)
SC_DLLPUBLIC const ScPatternAttr * GetPattern(SCCOL nCol, SCROW nRow, SCTAB nTab) const
bool CopyOneCellFromClip(sc::CopyFromClipContext &rCxt, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2)
bool GetNoListening() const
A pretty assertion that checks that the relevant bits in the are not set on the document at entry an...
void AdjustAbsoluteRefs(const ScDocument &rOldDoc, const ScAddress &rOldPos, const ScAddress &rNewPos, bool bCheckCopyArea)
Make all absolute references pointing to the copied range if the range is copied too.
void SwapNonEmpty(sc::TableValues &rValues)
SC_DLLPUBLIC ScRangeData * findByUpperName(const OUString &rName)
void DelayFormulaGrouping(bool delay)
If set, joining cells into shared formula groups will be delayed until reset again (RegroupFormulaCel...
Keep track of all named expressions that have been updated during reference update.
SC_DLLPUBLIC void GetRangeNameMap(std::map< OUString, ScRangeName * > &rRangeName)
bool HasUniformRowHeight(SCTAB nTab, SCROW nRow1, SCROW nRow2) const
UpdateRefMode meMode
update mode - insert/delete, copy, or move.
bool ReferencesSheet(SCTAB nTab, SCTAB nPosTab) const
Returns true if the sheet nTab is referenced in code.
void IncCol(SCCOL nDelta=1)
void setSingleCellNote(size_t nColOffset, const ScPostIt *pNote)
SC_DLLPUBLIC void RestoreTabFromCache(SCTAB nTab, SvStream &rStream)
std::unique_ptr< sc::ExternalDataMapper > mpDataMapper
void UnshareFormulaCells(SCCOL nCol, std::vector< SCROW > &rRows)
sc::MultiDataCellState HasMultipleDataCells(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2) const
void DeleteBeforeCopyFromClip(sc::CopyFromClipContext &rCxt, const ScMarkData &rMark, sc::ColumnSpanSet &rBroadcastSpans)
void SharePooledResources(const ScDocument *pSrcDoc)
Structure that stores segments of boolean flags per column, and perform custom action on those segmen...
void CopyCellValuesFrom(const ScAddress &rTopPos, const sc::CellValues &rSrc)
const ScRange & getRange() const
void CreateColumnIfNotExists(SCTAB nTab, SCCOL nCol)
void StartListeningFormulaCells(sc::StartListeningContext &rStartCxt, sc::EndListeningContext &rEndCxt, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2)
exports com.sun.star.awt. tab
void UpdateScriptTypes(SCROW nRow1, SCROW nRow2)
SC_DLLPUBLIC ScRangeData * findByIndex(sal_uInt16 i) const
void SetAreasChangedNeedBroadcast()
SC_DLLPUBLIC void StoreTabToCache(SCTAB nTab, SvStream &rStrm) const
ScRange maRange
Range of cells that are about to be moved for insert/delete/move modes.
void setSingleCellPattern(size_t nColOffset, const ScPatternAttr *pAttr)
SheetGeomType
Represents the type of sheet geometry data.
void EndListeningGroup(sc::EndListeningContext &rCxt, const SCCOL nCol, SCROW nRow)
Internal use only (undo etc.): do not copy/delete caption objects of cell notes.
bool IsEditActionAllowed(sc::ColRowEditAction eAction, SCTAB nTab, SCCOLROW nStart, SCCOLROW nEnd) const
Configuration options for formula interpreter.
SCROW GetLOKFreezeRow() const
bool SetLOKFreezeCol(SCCOL nFreezeCol)
NameIndicesType getUpdatedNames(SCTAB nTab) const
constexpr TypedWhichId< SvxBrushItem > ATTR_BACKGROUND(148)
void finalizeOutlineImport()
SC_DLLPUBLIC bool EnsureFormulaCellResults(const ScRange &rRange, bool bSkipRunning=false)
Make sure all of the formula cells in the specified range have been fully calculated.
void SetNeedsListeningGroups(const std::vector< ScAddress > &rPosArray)
ScRange getWholeRange() const
Return a single range that encompasses all individual ranges.
bool operator<(const ScDPCollection::DBType &left, const ScDPCollection::DBType &right)
void SetIndex(sal_uInt16 nInd)
void AdjustSheetLocalNameReferences(SCTAB nOldTab, SCTAB nNewTab)
When copying a sheet-local named expression, move sheet references that point to the originating shee...
SCCOL GetLOKFreezeCol(SCTAB nTab) const
const ScAddress & GetPos() const
bool HasFormulaCell(const ScRange &rRange) const
Check if there is at least one formula cell in specified range.
std::unique_ptr< sc::ColumnIterator > GetColumnIterator(SCCOL nCol, SCROW nRow1, SCROW nRow2) const
#define SAL_WARN_IF(condition, area, stream)
std::unique_ptr< ScTable, o3tl::default_delete< ScTable > > ScTableUniquePtr
SCTAB mnTabDelta
Amount and direction of movement in the sheet direction.
void UnshareFormulaCells(SCTAB nTab, SCCOL nCol, std::vector< SCROW > &rRows)
Make specified formula cells non-grouped.
bool SetLOKFreezeRow(SCROW nFreezeRow, SCTAB nTab)
void EnableDelayStartListeningFormulaCells(ScColumn *column, bool delay)
If set, ScColumn::StartListeningFormulaCells() calls may be delayed using CanDelayStartListeningFormu...
void SetNewName(const OUString &rNewName)
Does not change the name, but sets maNewName for formula update after dialog.
std::set< Color > GetDocColors()
Item2Range GetItemSurrogates(sal_uInt16 nWhich) const
ScDocument * getUndoDoc()
SCTAB getTabStart() const
ScDocument * getClipDoc()
SC_DLLPUBLIC void PreprocessDBDataUpdate()
bool IsMerged(const ScAddress &rPos) const
std::vector< ScTableUniquePtr > TableContainer
bool SetLOKFreezeRow(SCROW nFreezeRow)
void StartNeededListeners()
std::shared_ptr< svl::SharedStringPool > mpCellStringPool
bool EnsureFormulaCellResults(const SCCOL nCol1, SCROW nRow1, const SCCOL nCol2, SCROW nRow2, bool bSkipRunning=false)
void setSingleCellColumnSize(size_t nSize)
Set the column size of a "single cell" row, which is used when copying a single row of cells in a cli...
void RegroupFormulaCells(SCCOL nCol)
rtl::Reference< ScPoolHelper > mxPoolHelper
void ConvertFormulaToValue(const ScRange &rRange, sc::TableValues *pUndo)
SfxObjectShell * GetDocumentShell() const
#define SAL_WARN(area, stream)
bool GetTableSelect(SCTAB nTab) const
void DeleteBeforeCopyFromClip(sc::CopyFromClipContext &rCxt, const ScTable &rClipTab, sc::ColumnSpanSet &rBroadcastSpans)
bool CopyAdjustRangeName(SCTAB &rSheet, sal_uInt16 &rIndex, ScRangeData *&rpRangeData, ScDocument &rNewDoc, const ScAddress &rNewPos, const ScAddress &rOldPos, const bool bGlobalNamesToLocal, const bool bUsedByFormula) const
If necessary (name references sheet rOldPos.Tab()) copy and adjust named expression/range from sheet-...
void EndListeningIntersectedGroup(sc::EndListeningContext &rCxt, SCCOL nCol, SCROW nRow, std::vector< ScAddress > *pGroupPos)
ScRangeData * FindRangeNameBySheetAndIndex(SCTAB nTab, sal_uInt16 nIndex) const
Find a named expression / range name in either global or a local scope.
SCCOL mnColDelta
Amount and direction of movement in the column direction.
void SwapNonEmpty(sc::TableValues &rValues, sc::StartListeningContext &rStartCxt, sc::EndListeningContext &rEndCxt)
void StoreToCache(SvStream &rStrm) const
constexpr TypedWhichId< SvxColorItem > ATTR_FONT_COLOR(109)
bool SetLOKFreezeCol(SCCOL nFreezeCol, SCTAB nTab)
SC_DLLPUBLIC void SetCalcConfig(const ScCalcConfig &rConfig)
SCCOL GetLOKFreezeCol() const
void SetValues(const ScAddress &rPos, const std::vector< double > &rVals)
std::unique_ptr< ScRange > pDelayedFormulaGrouping
SC_DLLPUBLIC bool insert(ScRangeData *p, bool bReuseFreeIndex=true)
Insert object into set.
Strings (and string results if InsertDeleteFlags::FORMULA is not set).
bool IsMerged(SCCOL nCol, SCROW nRow) const
const Color & GetValue() const
SC_DLLPUBLIC void PreprocessRangeNameUpdate()
sc::MultiDataCellState HasMultipleDataCells(const ScRange &rRange) const
Check if the specified range contains either: 1) one non-empty cell, 2) more than one non-empty cells...
bool FindRangeNamesReferencingSheet(sc::UpdatedRangeNames &rIndexes, SCTAB nTokenTab, const sal_uInt16 nTokenIndex, SCTAB nGlobalRefTab, SCTAB nLocalRefTab, SCTAB nOldTokenTab, SCTAB nOldTokenTabReplacement, bool bSameDoc, int nRecursion) const
Recursively find all named expressions that directly or indirectly (nested) reference a given sheet...
OString dumpSheetGeomData(bool bColumns, SheetGeomType eGeomType)
Serializes the sheet's geometry data.
void TransferCellValuesTo(const ScAddress &rTopPos, size_t nLen, sc::CellValues &rDest)
Transfer a series of contiguous cell values from specified position to the passed container...
std::unique_ptr< sc::ColumnIterator > GetColumnIterator(SCTAB nTab, SCCOL nCol, SCROW nRow1, SCROW nRow2) const