componentLoader = UNO.createDesktop()~XDesktop~XComponentLoader
calcComponent = componentLoader~loadComponentFromURL("private:factory/scalc", "_blank", 0, .UNO~noProps)
sheet = calcComponent~XSpreadSheetDocument~getSheets~XIndexAccess~getByIndex(0)~XSpreadSheet
CALL UNO.setCell sheet, 0, 0, "Number"
CALL UNO.setCell sheet, 1, 0, "SIN(A)"
CALL UNO.setCell sheet, 2, 0, "SIN(A*B)"
heading = sheet~getCellRangeByName("A1:C1")
heading~XPropertySet~setPropertyValue("CellBackColor", box("int", "00 00 77"x ~c2d))
heading~XPropertySet~setPropertyValue("CharHeight", box("float", "14.0"))
last_value = -1
do i=1 to 30 by 1
CALL UNO.setCell sheet, 0, i, i/5
sheet~getCellByPosition(1,i)~setFormula("=SIN(A"i+1")")
sheet~getCellByPosition(2,i)~setFormula("=SIN(A"i+30"-B"i+1")")
end
chartRec = .bsf~new("com.sun.star.awt.Rectangle")
chartRec~X = 7000
chartRec~Y = 0
chartRec~Width = 20000
chartRec~Height = 10000
chartCellRange = sheet~getCellRangeByName("A1:C31")~xCellRangeAddressable~getRangeAddress
CALL UNO.loadClass "com.sun.star.table.CellRangeAddress"
chartAddressArray = bsf.createArray(.UNO~CellRangeAddress, 1)
chartAddressArray[1] = chartCellRange
chart = sheet~xTableChartsSupplier~getCharts
chart~addNewByName("myChart", chartRec, chartAddressArray, .true, .true)
::requires UNO.CLS