summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2012-04-17 22:10:10 +0200
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2012-04-17 22:12:37 +0200
commite5322f13e0d433a7103edbf36cd3d2ab0d3e18c7 (patch)
treeb28894f5fb8b2c5e067ea779a226924ab25ce0c8 /sc
parent393b14fddd7b328a6e2af78c0c351447ccb0ba6a (diff)
some more uno removement in oox range name import
Diffstat (limited to 'sc')
-rw-r--r--sc/source/filter/oox/workbookhelper.cxx32
1 files changed, 18 insertions, 14 deletions
diff --git a/sc/source/filter/oox/workbookhelper.cxx b/sc/source/filter/oox/workbookhelper.cxx
index 83c67bdb075c..6e5dce83429b 100644
--- a/sc/source/filter/oox/workbookhelper.cxx
+++ b/sc/source/filter/oox/workbookhelper.cxx
@@ -401,29 +401,33 @@ ScRangeData* WorkbookGlobals::createNamedRangeObject( OUString& orName, const Se
return pScRangeData;
}
+namespace {
+
+rtl::OUString findUnusedName( const ScRangeName* pRangeName, const rtl::OUString& rSuggestedName )
+{
+ rtl::OUString aNewName = rSuggestedName;
+ sal_Int32 nIndex = 0;
+ while(pRangeName->findByUpperName(ScGlobal::pCharClass->uppercase(aNewName)))
+ aNewName = rtl::OUStringBuffer(rSuggestedName).append( '_' ).append( nIndex++ ).makeStringAndClear();
+
+ return aNewName;
+}
+
+}
+
ScRangeData* WorkbookGlobals::createLocalNamedRangeObject( OUString& orName, const Sequence< FormulaToken >& rTokens, sal_Int32 nIndex, sal_Int32 nNameFlags, sal_Int32 nTab ) const
{
// create the name and insert it into the Calc document
ScRangeData* pScRangeData = NULL;
- if( !orName.isEmpty() ) try
+ if( !orName.isEmpty() )
{
- // find an unused name
- Reference< XIndexAccess > xSheets(mxDoc->getSheets(), UNO_QUERY_THROW);
- Reference< XSpreadsheet > xSheet (xSheets->getByIndex(nTab), UNO_QUERY_THROW);
- Reference< com::sun::star::container::XNamed > xNamed(xSheet, UNO_QUERY_THROW);
- rtl::OUString aName = xNamed->getName();
- PropertySet aSheetProps( xSheet );
- Reference< XNamedRanges > xNamedRanges( aSheetProps.getAnyProperty( PROP_NamedRanges ), UNO_QUERY_THROW );
- Reference< XNameAccess > xNameAccess( xNamedRanges, UNO_QUERY_THROW );
- orName = ContainerHelper::getUnusedName( xNameAccess, orName, '_' );
- // create the named range
ScDocument& rDoc = getScDocument();
ScRangeName* pNames = rDoc.GetRangeName( nTab );
+ // find an unused name
+ orName = findUnusedName( pNames, orName );
+ // create the named range
pScRangeData = lcl_addNewByNameAndTokens( rDoc, pNames, orName, rTokens, nIndex, nNameFlags );
}
- catch (const Exception&)
- {
- }
return pScRangeData;
}