OO-Snippets: Merge and unmerge cells

Commons

Keywordsmerge, unmerge, cell, cells
LanguageooRexx
ApplicationCalc
AuthorsJosef Frysak (initial)
Supported Versions2.4.1  
Supported OSAll  
QuestionHow to merge and unmerge cells?
Answer

First get the current selection of the selected spreadsheet. Then get the

"XMergeable" interface of the selection. With this interface one can find

out wheter the selected are merged or not and is able to merge or umerge

them.

For further details see http://wi.wu-wien.ac.at/rgf/diplomarbeiten/BakkStuff/2008/200809_Frysak/200809_Frysak_Automating_OOo_ooRexx_Nutshells.pdf.

Code-Snippet-Listing (snippet-source)

-- try to get a script context, will be .nil, if script was not invoked by OOo
x_ScriptContext = uno.getScriptContext()
if (x_ScriptContext <> .nil) then
do
   -- invoked by OOo as a macro

   -- get context
   x_ComponentContext = x_ScriptContext~getComponentContext
   -- get desktop (an XDesktop)
   x_Desktop  = x_ScriptContext~getDesktop
   -- get current document
   x_Document = x_ScriptContext~getDocument
end
else  
do
   -- called from outside of OOo, create a connection

   -- connect to Open Office and get component context
   x_ComponentContext = UNO.connect()
   -- create a desktop service and its interface
   service = "com.sun.star.frame.Desktop"
   s_Desktop = x_ComponentContext~getServiceManager~XMultiServiceFactory~createInstance(service)
   x_Desktop = s_Desktop~XDesktop
   -- get the last active document
   x_Document = x_Desktop~getCurrentComponent()  
end




-- query current selection
x_Model = x_Document~XModel
selection = x_Model~getCurrentSelection()
x_Mergable = selection~XMergeable

-- if slecetion contains a merged cell unmerge it, else merge
-- whole selection to one cell
if x_Mergable~getIsMerged() then
do
   x_Mergable~merge(.false)
end
else
do
   x_Mergable~merge(.true)
end

::requires UNO.CLS

Changelog

DateUserModification
2008-10-131Initial version

and