Search code examples
smalltalkvisualworks

How can I use collections with the excel com interface from visual works


Using the Excel COM automation interface I can set value in a cell by doing:

excel := COMDispatchDriver createObject: 'Excel.Application'.
excel getWorkbooks Add. 
excel setVisible: true.
(excel getRange: 'A1') setValue: 100

Is there a way I can do this with a collection, something like:

excel := COMDispatchDriver createObject: 'Excel.Application'.
excel getWorkbooks Add. 
excel setVisible: true.
(excel getRange: 'A1:A4') setValue: #(1 2 3 4)

Solution

  • ExcelApplicationController
    
    | cont |
    cont := (Examples.Excel97ApplicationController new).
    [
      cont addWorkbook.
      cont isVisible: true.
    
      "Insert the title of our report."
      cont caption: 'First Quarter Results'.
    
      cont setRange: 'B5:E9'
         to: #( #( 10 20 30 40 ) #( 1 2 3 4 ) #( 101 201 301 401) #( 102 203 305 407 ) ).
    
    
    ] ensure:[
      cont notNil
            ifTrue: [
                cont release.
                cont := nil ]
    ]