OO-Snippets: Clear the selected cells of a spreadsheet

Commons

Keywordsclear, delete, selected, cell, cells, spreadsheet
LanguageooRexx
ApplicationCalc
AuthorsJosef Frysak (initial)
Supported Versions2.4.1  
Supported OSAll  
QuestionHow to clear only the selected cells of the spreadsheet?
Answer

Get the selected cells by calling "getCurrentSelection" of the XModel interace.

This function will return a CellCursor. Now use the CellCursors

"XSheetOperation" interface to delete the cells.

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





-- frist get the current selection
x_Model = x_Document~XModel
selection = x_Model~getCurrentSelection()

-- then clear all cell flags (= deleting all content)
x_SheetOp = selection~XSheetOperation
x_SheetOp~clearContents(1+2+4+8+16+32+64+128+256+512)

::requires UNO.CLS

Changelog

DateUserModification
2008-10-121Initial version

and