//honeypot demagogic

 Forum DhammaCitta. Forum Diskusi Buddhis Indonesia

Author Topic: [ASK] Otomatisasi Office in Programming Language  (Read 4463 times)

0 Members and 1 Guest are viewing this topic.

Offline Forte

  • Sebelumnya FoxRockman
  • KalyanaMitta
  • *****
  • Posts: 16.577
  • Reputasi: 458
  • Gender: Male
  • not mine - not me - not myself
[ASK] Otomatisasi Office in Programming Language
« on: 01 March 2009, 08:57:23 AM »
Dear All,

Mau tanya neh.. selama ini kan yang suka coding kadang suka memanggil Excel dengan menggunakan prinsip Otomatisasi Office.

Misal :

xlo = createobject("Excel.Application")
....
xlo.sheets(1).select
xlo.cells(1,1).value = "Dhammacitta"
xlo.visible = .t.

Nanti akan muncul excel yang dipanggil secara otomatis dan book1.xls akan terisi : Dhammacitta pada A1

bagaimana kalau di client tempat aplikasi di-running tidak terinstall Ms. Office, namun yang ada Open Office ?
Dan saya belum pernah coba seh di Open Office, atau pun Lotus Symphony.

Ada yang sudah berpengalaman di Open Office n sejenisnya ? atau ada perbedaan trik otomatisasinya.
 
Kalau bisa seh.. ada e-book yang mengupas mengenai Open Office Automation ini.. :P
« Last Edit: 01 March 2009, 09:01:43 AM by Forte »
Ini bukan milikku, ini bukan aku, ini bukan diriku
6 kelompok 6 - Chachakka Sutta MN 148

Offline Forte

  • Sebelumnya FoxRockman
  • KalyanaMitta
  • *****
  • Posts: 16.577
  • Reputasi: 458
  • Gender: Male
  • not mine - not me - not myself
Re: [ASK] Otomatisasi Office in Programming Language
« Reply #1 on: 01 March 2009, 10:44:52 AM »
hasil tanya mbah google.

Visual FoxROCK....... YEAH.. :))
Codingnya agak ribet.. bikin puyeng juga.. :P

Code: (visual foxpro) [Select]
*    Library of routines to manipulate OpenOffice.org.
*
*
* http://kosh.datateamsys.com/~danny/OOo/VisualFoxPro-OOo/LibOOo-2003-11-17-01.prg

*############################################################
*    Public API
*    High level routines.
*############################################################


* Return .T. if OpenOffice.org is installed.
* Return .F. if not installed.
FUNCTION OOoIsInstalled()
    LOCAL oServiceManager
    oServiceManager = .NULL.

    LOCAL cOldErrHandler
    cOldErrHandler = ON( "ERROR" )
    ON ERROR = DoNothing__ErrorHandler( ERROR(), MESSAGE(), LINENO(), SYS(16), PROGRAM(), SYS(2018) )
        oServiceManager = OOoGetServiceManager()
    ON ERROR &cOldErrHandler
   
    * If we could create a Service Manager,
    *  then OpenOffice.org must be installed.
    RETURN NOT ISNULL( oServiceManager )
ENDFUNC




* Easy way to create a new Draw document.
FUNCTION OOoCreateNewDrawDocument()
    LOCAL oDrawDoc
    oDrawDoc = OOoOpenURL( "private:factory/sdraw" )
    RETURN oDrawDoc
ENDFUNC


* Easy way to create a new Writer document.
FUNCTION OOoCreateNewWriterDocument()
    LOCAL oWriterDoc
    oWriterDoc = OOoOpenURL( "private:factory/swriter" )
    RETURN oWriterDoc
ENDFUNC


* Easy way to create a new Calc document.
FUNCTION OOoCreateNewCalcDocument()
    LOCAL oCalcDoc
    oCalcDoc = OOoOpenURL( "private:factory/scalc" )
    RETURN oCalcDoc
ENDFUNC


* Easy way to create a new Impress document.
FUNCTION OOoCreateNewImpressDocument()
    LOCAL oImpressDoc
    oImpressDoc = OOoOpenURL( "private:factory/simpress" )
    RETURN oImpressDoc
ENDFUNC



FUNCTION OOoOpenFile( cFilename )
    LOCAL cURL
    cURL = OOoConvertToURL( cFilename )
   
    LOCAL oDoc
    oDoc = OOoOpenURL( cURL )
    RETURN oDoc
ENDFUNC


PROCEDURE OOoTerminateProgram()
    LOCAL oDesktop
    oDesktop = OOoGetDesktop()
    oDesktop.Terminate()
   
    =__OOoReleaseCachedVars()
ENDPROC


* Convert a local filename to an OOo URL.
FUNCTION OOoConvertToURL( cFilename )
    * Ensure leading slash.
    IF LEFT( cFilename, 1 ) != "/"
        cFileName = "/" + cFileName
    ENDIF
   
    LOCAL cURL
    cURL = CHRTRAN( cFilename, "\", "/" )    && change backslashes to forward slashes.
    cURL = "file://" + cURL
    RETURN cURL
ENDFUNC

Bersambung ...

Ini bukan milikku, ini bukan aku, ini bukan diriku
6 kelompok 6 - Chachakka Sutta MN 148

Offline Forte

  • Sebelumnya FoxRockman
  • KalyanaMitta
  • *****
  • Posts: 16.577
  • Reputasi: 458
  • Gender: Male
  • not mine - not me - not myself
Re: [ASK] Otomatisasi Office in Programming Language
« Reply #2 on: 01 March 2009, 10:46:07 AM »
Code: (visual foxpro) [Select]
*############################################################
*    Draw specific tools
*############################################################


* Page zero is the first page.
* Once you have a drawing document, obtain one of its pages.
FUNCTION OOoGetDrawPage( oDrawDoc, nPageNum )
    LOCAL oPages
    oPages = oDrawDoc.GetDrawPages()
    LOCAL oPage
    oPage = oPages.GetByIndex( nPageNum )
    RETURN oPage
ENDFUNC


* Given a draw document, create a shape.
* The shape must be added to the draw page, by calling
*  the draw page's Add() method.
* The oPosition and oSize arguments are optional, but you may
*  pass a Point and Size struct for these arguments.

FUNCTION OOoMakeRectangleShape( oDrawDoc, oPosition, oSize )
    LOCAL oShape
    oShape = OOoMakeShape( oDrawDoc, "com.sun.star.drawing.RectangleShape", oPosition, oSize )
    RETURN oShape
ENDFUNC

FUNCTION OOoMakeEllipseShape( oDrawDoc, oPosition, oSize )
    LOCAL oShape
    oShape = OOoMakeShape( oDrawDoc, "com.sun.star.drawing.EllipseShape", oPosition, oSize )
    RETURN oShape
ENDFUNC

FUNCTION OOoMakeLineShape( oDrawDoc, oPosition, oSize )
    LOCAL oShape
    oShape = OOoMakeShape( oDrawDoc, "com.sun.star.drawing.LineShape", oPosition, oSize )
    RETURN oShape
ENDFUNC

FUNCTION OOoMakeTextShape( oDrawDoc, oPosition, oSize )
    LOCAL oShape
    oShape = OOoMakeShape( oDrawDoc, "com.sun.star.drawing.TextShape", oPosition, oSize )
    RETURN oShape
ENDFUNC


* Create and return a Point struct.
FUNCTION OOoPosition( nX, nY )
    LOCAL oPoint
    oPoint = OOoCreateStruct( "com.sun.star.awt.Point" )
    oPoint.X = nX
    oPoint.Y = nY
    RETURN oPoint
ENDFUNC

* Create and return a Size struct.
FUNCTION OOoSize( nWidth, nHeight )
    LOCAL oSize
    oSize = OOoCreateStruct( "com.sun.star.awt.Size" )
    oSize.Width = nWidth
    oSize.Height = nHeight
    RETURN oSize
ENDFUNC


* Given a shape, alter its position.
PROCEDURE OOoSetPosition( oShape, nX, nY )
    LOCAL oPosition
    oPosition = oShape.Position
    oPosition.X = nX
    oPosition.Y = nY
    oShape.Position = oPosition
ENDPROC

* Given a shape, alter its size.
PROCEDURE OOoSetSize( oShape, nWidth, nHeight )
    LOCAL oSize
    oSize = oShape.Size
    oSize.Width = nWidth
    oSize.Height = nHeight
    oShape.Size = oSize
ENDPROC


* Given a draw document, create a shape.
* Optional:  oPosition, oSize can receive a Point or Size struct.
FUNCTION OOoMakeShape( oDrawDoc, cShapeClassName, oPosition, oSize )
    LOCAL oShape
    oShape = oDrawDoc.CreateInstance( cShapeClassName )
   
    IF (TYPE([oPosition])="O")  AND  (NOT ISNULL( oPosition ))
        oShape.Position = oPosition
    ENDIF
    IF (TYPE([oSize])="O")  AND  (NOT ISNULL( oSize ))
        oShape.Size = oSize
    ENDIF
   
    RETURN oShape
ENDFUNC
Bersambung ...

Ini bukan milikku, ini bukan aku, ini bukan diriku
6 kelompok 6 - Chachakka Sutta MN 148

Offline Forte

  • Sebelumnya FoxRockman
  • KalyanaMitta
  • *****
  • Posts: 16.577
  • Reputasi: 458
  • Gender: Male
  • not mine - not me - not myself
Re: [ASK] Otomatisasi Office in Programming Language
« Reply #3 on: 01 March 2009, 10:47:28 AM »
Code: (visual foxpro) [Select]
*############################################################
*    Color conversion utilities
*    --------------------------
*    Visual FoxPro and OpenOffice.org do not represent
*     color values the same way.
*    Conversion routines in both directions are provided
*     to keep things easy.
*    In addition, extremely convenient HSV routines are provided.
*    See LibGraphics for discussion of HSV color model.
*############################################################


* Similar to VFP's built in RGB() function.
* Pass in R,G,B values and out comes an OpenOffice.org color value.
* Note that this is DIFFERENT from how VFP constructs color values.
FUNCTION OOoRGB( nRed, nGreen, nBlue )
    RETURN BITOR( BITOR( BITLSHIFT( nRed, 16 ), BITLSHIFT( nGreen, 8 ) ), nBlue )
ENDFUNC

* Translate between a Visual FoxPro color and an OpenOffice.org color
*  by using a simple formula.
* Pass in a VFP color, out comes an OOo color.  And vice versa.
FUNCTION OOoColor( nColor )
    LOCAL nTranslatedColor
    nTranslatedColor = (INT( nColor / 65536 )) + (INT( INT( nColor / 256 ) % 256 ) * 256) + (INT( nColor % 256 ) * 65536)
    RETURN nTranslatedColor
ENDFUNC

* Extract the Red component from an OpenOffice.org color.
* SImilar to the RGBRed() function in LibGraphics.
FUNCTION OOoRed( nOOoColor )
*    RETURN INT( nOOoColor / 65536 )
    RETURN BITRSHIFT( BITAND( nOOoColor, 0x00FF0000 ), 16 )
ENDFUNC

* Extract the Green component from an OpenOffice.org color.
* SImilar to the RGBGreen() function in LibGraphics.
FUNCTION OOoGreen( nOOoColor )
*    RETURN INT( INT( nOOoColor / 256 ) % 256 )
    RETURN BITRSHIFT( BITAND( nOOoColor, 0x0000FF00 ), 8 )
ENDFUNC

* Extract the Blue component from an OpenOffice.org color.
* SImilar to the RGBBlue() function in LibGraphics.
FUNCTION OOoBlue( nOOoColor )
*    RETURN INT( nOOoColor % 256 )
    RETURN BITAND( nOOoColor, 0x000000FF )
ENDFUNC

* Convenient way to construct an OOo color from HSV components.
* See LibGraphics for information about HSV.
* Note nHue is a number from 0.0 to 1.0.
FUNCTION OOoHSV( nHue, nSaturation, nBrightness )
    LOCAL nColor
    nColor = MakeHSVColor( nHue * 6.0, nSaturation, nBrightness )
    nColor = OOoColor( nColor )
    RETURN nColor
ENDFUNC

* Convenient way to extract the Hue component from an OOo color.
* See LibGraphics for information about HSV.
* Note nHue is a number from 0.0 to 1.0.
FUNCTION OOoHue( nOOoColor )
    RETURN HSVHue( OOoColor( nOOoColor ) ) / 6.0
ENDFUNC

* Convenient way to extract the Saturation component from an OOo color.
* See LibGraphics for information about HSV.
FUNCTION OOoSaturation( nOOoColor )
    RETURN HSVSaturation( OOoColor( nOOoColor ) )
ENDFUNC

* Convenient way to extract the Brightness component from an OOo color.
* See LibGraphics for information about HSV.
FUNCTION OOoBrightness( nOOoColor )
    RETURN HSVValue( OOoColor( nOOoColor ) )
ENDFUNC



*############################################################



PROCEDURE DoNothing__ErrorHandler( pnError, pcErrMessage, pnLineNo, pcProgramFileSys16, pcProgram, pcErrorParamSys2018 )
ENDPROC


* Return the OpenOffice.org service manager object.
* Cache it in a global variable.
* Create it if not already cached.
FUNCTION OOoGetServiceManager()
    IF (TYPE([goOOoServiceManager])!="O")  OR  ISNULL( goOOoServiceManager )
        PUBLIC goOOoServiceManager
        goOOoServiceManager = CREATEOBJECT( "com.sun.star.ServiceManager" )
    ENDIF
    RETURN goOOoServiceManager
ENDFUNC


* Sugar coated routine to ask the service manager to
*  create you an instance of some other OpenOffice.org UNO object.
FUNCTION OOoServiceManager_CreateInstance( cServiceName )
    LOCAL oServiceManager
    oServiceManager = OOoGetServiceManager()
   
    LOCAL oInstance
    oInstance = .NULL.

    LOCAL cOldErrHandler
    cOldErrHandler = ON( "ERROR" )
    ON ERROR = DoNothing__ErrorHandler( ERROR(), MESSAGE(), LINENO(), SYS(16), PROGRAM(), SYS(2018) )
        oInstance = oServiceManager.createInstance( cServiceName )
    ON ERROR &cOldErrHandler
   
    IF ISNULL( oInstance )
        =__OOoReleaseCachedVars()
        oServiceManager = OOoGetServiceManager()
        oInstance = oServiceManager.createInstance( cServiceName )
    ENDIF

    RETURN oInstance
ENDFUNC


* Sugar coated routine to create any UNO struct.
* Use the Bridge_GetStruct() feature of the OLE-UNO bridge.
FUNCTION OOoCreateStruct( cTypeName )
    LOCAL oServiceManager
    oServiceManager = OOoGetServiceManager()
   
    LOCAL oStruct
    oStruct = .NULL.

    LOCAL cOldErrHandler
    cOldErrHandler = ON( "ERROR" )
    ON ERROR = DoNothing__ErrorHandler( ERROR(), MESSAGE(), LINENO(), SYS(16), PROGRAM(), SYS(2018) )
        oStruct = oServiceManager.Bridge_GetStruct( cTypeName )
    ON ERROR &cOldErrHandler
   
    IF ISNULL( oStruct )
        =__OOoReleaseCachedVars()
        oServiceManager = OOoGetServiceManager()
        oStruct = oServiceManager.Bridge_GetStruct( cTypeName )
    ENDIF

    RETURN oStruct
ENDFUNC


* Return the OpenOffice.org desktop object.
* Cache it in a global variable.
* Create it if not already cached.
FUNCTION OOoGetDesktop()
    IF (TYPE([goOOoDesktop])!="O")  OR  ISNULL( goOOoDesktop )
        PUBLIC goOOoDesktop
        goOOoDesktop = OOoServiceManager_CreateInstance( "com.sun.star.frame.Desktop" )
        COMARRAY( goOOoDesktop, 10 )
    ENDIF
    RETURN goOOoDesktop
ENDFUNC


*!*    * Return an instance of com.sun.star.reflection.CoreReflection.
*!*    * Cache it in a global variable.
*!*    * Create it if not already cached.
*!*    FUNCTION OOoGetCoreReflection()
*!*        IF (TYPE([goOOoCoreReflection])!="O")  OR  ISNULL( goOOoCoreReflection )
*!*            PUBLIC goOOoCoreReflection
*!*            goOOoCoreReflection = OOoServiceManager_CreateInstance( "com.sun.star.reflection.CoreReflection" )
*!*            COMARRAY( goOOoCoreReflection, 10 )
*!*        ENDIF
*!*        RETURN goOOoCoreReflection
*!*    ENDFUNC


*!*    * Create a UNO struct object and return it.
*!*    * This routine is now obsolete.
*!*    * See a superior implementation of this routine elsewhere
*!*    *  which uses the Bridge_GetStruct() feature of the OLE-UNO bridge.
*!*    FUNCTION OOoCreateStruct( cTypeName )
*!*        * Ask service manager for a CoreReflection object.
*!*        LOCAL oCoreReflection
*!*        oCoreReflection = OOoGetCoreReflection()
*!*       
*!*        * Get the IDL Class for the type name.
*!*        LOCAL oXIdlClass
*!*        oXIdlClass = .NULL.

*!*        LOCAL cOldErrHandler
*!*        cOldErrHandler = ON( "ERROR" )
*!*        ON ERROR = DoNothing__ErrorHandler( ERROR(), MESSAGE(), LINENO(), SYS(16), PROGRAM(), SYS(2018) )
*!*            oXIdlClass = oCoreReflection.forName( cTypeName )
*!*        ON ERROR &cOldErrHandler
*!*       
*!*        IF ISNULL( oXIdlClass )
*!*            =__OOoReleaseCachedVars()
*!*            oCoreReflection = OOoGetCoreReflection()
*!*            oXIdlClass = oCoreReflection.forName( cTypeName )
*!*        ENDIF
*!*       
*!*        * Create a variable to hold the created Struct.
*!*        * Assign it some initial value.
*!*        LOCAL oStruct
*!*        oStruct = CREATEOBJECT( "relation" ) && assign some kind of object initially

*!*        * Ask the class definition to create an instance.
*!*        oXIdlClass.CreateObject(  [at] oStruct )
*!*       
*!*        RETURN oStruct
*!*    ENDFUNC


* Create a com.sun.star.beans.PropertyValue struct and return it.
FUNCTION OOoPropertyValue( cName, uValue, nHandle, nState )
    LOCAL oPropertyValue
    oPropertyValue = OOoCreateStruct( "com.sun.star.beans.PropertyValue" )
   
    oPropertyValue.Name = cName
    oPropertyValue.Value = uValue
   
    IF TYPE([nHandle])="N"
        oPropertyValue.Handle = nHandle
    ENDIF
    IF TYPE([nState])="N"
        oPropertyValue.State = nState
    ENDIF
   
    RETURN oPropertyValue
ENDFUNC



* Open or Create a document from it's URL.
* New documents are created by URL's such as:
*    private:factory/sdraw
*    private:factory/swriter
*    private:factory/scalc
*    private:factory/simpress
FUNCTION OOoOpenURL( cURL )
*    LOCAL oPropertyValue
*    oPropertyValue = OOoCreateStruct( "com.sun.star.beans.PropertyValue" )

*    LOCAL ARRAY aNoArgs[1]
*    aNoArgs[1] = oPropertyValue
*    aNoArgs[1].Name = "ReadOnly"
*    aNoArgs[1].Value = .F.

    * These two lines replace the alternate version above,
    *  which are left commented for the insight they provide.
    LOCAL ARRAY aNoArgs[1]
    aNoArgs[1] = OOoPropertyValue( "Hidden", .F. )
   
    LOCAL oDesktop
    oDesktop = OOoGetDesktop()

    LOCAL oDoc
    oDoc = oDesktop.LoadComponentFromUrl( cURL, "_blank", 0,  [at]  aNoargs )
   
    * Make sure that arrays passed to this document are passed zero based.
    COMARRAY( oDoc, 10 )
   
    RETURN oDoc
ENDFUNC


PROCEDURE __OOoReleaseCachedVars()
    RELEASE goOOoServiceManager, goOOoDesktop, goOOoCoreReflection
ENDPROC
Ini bukan milikku, ini bukan aku, ini bukan diriku
6 kelompok 6 - Chachakka Sutta MN 148

Offline Forte

  • Sebelumnya FoxRockman
  • KalyanaMitta
  • *****
  • Posts: 16.577
  • Reputasi: 458
  • Gender: Male
  • not mine - not me - not myself
Re: [ASK] Otomatisasi Office in Programming Language
« Reply #4 on: 01 March 2009, 10:49:11 AM »
Code: ( visual foxpro) [Select]
*############################################################


* Experimental stuff



*SET PROCEDURE TO LibOOo ADDITIVE
*oDoc = OOoOpenFile( GetDesktopFolderPathname() + "test.sxw" )


* This is an attempt to print a document.
PROCEDURE PrintExperiment( oDoc )
    LOCAL ARRAY aArgs[1]
    aArgs[1] = OOoPropertyValue( "CopyCount", 1, -1, 0 )
*    aArgs[1] = OOoPropertyValue( "Collate", .F. )
   
    oDoc.Print(  [at]  aArgs )
ENDPROC


*############################################################


PROCEDURE TestOOoDraw()
    * Create a drawing.
    LOCAL oDoc
    oDoc = OOoCreateNewDrawDocument()
   
    * Get the first page of the drawing.
    LOCAL oPage
    oPage = OOoGetDrawPage( oDoc, 0 )
   
    LOCAL nHue, nSaturation, nBrightness
    LOCAL nRow, nCol
    LOCAL oShape

    * Now let's draw some rectangles.

    *-----
    *    Notes about HSV color notation.
    * Imagine hue is a "rainbow" of colors, from 0.0 to 1.0.
    * 0.0 is red, then you progress to orange, yellow, green, blue, purple, and
    *  then back to red again.  (Not like a real rainbow.)  1.0 is red also.
    * HSV colors are easy for HUMANS, while RGB colors are easy for COMPUTERS.
    * Quick, what is the RGB for Pink?  Brown?
    * In HSV, you would think Pink is a low-saturation red at full brightness,
    *  thus you could say H=0.0, S=0.5, B=1.0; and that's off the top of my head.
    * Brown is a low brightness Orange, so H=0.0888, S=1.0, B=0.6; right out of thin air.
    * Need a highly contrasting color?  Easy in HSV coordinates.
    * Just pick the opposite hue, maybe maximize saturation (opposite of other color),
    *  and maybe also a min or max brightness.  Can't easily come up with highly
    *  contrasting colors in RGB coordinates in RGB space.
    * Need to "soften" colors?  Take each HSV coordinate, and lower the saturation
    *  by 10 %.
    * Need to "darken" colors?  Lower the brightness of each pixel by 10 %.
    *-----
   
    * Let's vary the hue and saturation, while keeping the brightness constant.
    * But you could vary any two parameters, while keeping the third constant.
   
    nBrightness = 1.0 && full brightness
    FOR nRow = 0 TO 9
        FOR nCol = 0 TO 9
            * Create a shape
            oShape = OOoMakeRectangleShape( oDoc )
            * Calculate color
            nHue = nCol / 9 && hue varies *across* by column
            nSaturation = nRow / 9 && saturation varies *down* by row
            * set color of shape
            * oShape.FillColor = OOoRGB( 255, 255, 255 )
            oShape.FillColor = OOoHSV( nHue, nSaturation, nBrightness )
            * Position and size the shape
            OOoSetSize( oShape, 500, 500 ) && 1/2 cm by 1/2 cm
            OOoSetPosition( oShape, 1000 + nCol * 600, 1000 + nRow * 600 )
            * Add shape to page
            oPage.Add( oShape )
        ENDFOR
    ENDFOR


    * Let's vary the hue and saturation, while keeping the brightness constant.
    * This time, we'll use less-brightness
    * But you could vary any two parameters, while keeping the third constant.
   
    nBrightness = 0.7 && less brightness
    FOR nRow = 0 TO 9
        FOR nCol = 0 TO 9
            * Create a shape
            oShape = OOoMakeRectangleShape( oDoc )
            * Calculate color
            nHue = nCol / 9 && hue varies *across* by column
            nSaturation = nRow / 9 && saturation varies *down* by row
            * set color of shape
            oShape.FillColor = OOoHSV( nHue, nSaturation, nBrightness )
            * Position and size the shape
            OOoSetSize( oShape, 500, 500 ) && 1/2 cm by 1/2 cm
            OOoSetPosition( oShape, 9000 + nCol * 600, 1000 + nRow * 600 )
            * Add shape to page
            oPage.Add( oShape )
        ENDFOR
    ENDFOR


    * Let's vary the hue and brightness, while keeping the saturation constant.
    * But you could vary any two parameters, while keeping the third constant.
   
    nSaturation = 1.0 && full saturation
    FOR nRow = 0 TO 9
        FOR nCol = 0 TO 9
            * Create a shape
            oShape = OOoMakeRectangleShape( oDoc )
            * Calculate color
            nHue = nRow / 9 && hue varies *down* by row
            nBrightness = nCol / 9 && brightness varies *across* by column
            * set color of shape
            oShape.FillColor = OOoHSV( nHue, nSaturation, nBrightness )
            * Position and size the shape
            OOoSetSize( oShape, 500, 500 ) && 1/2 cm by 1/2 cm
            OOoSetPosition( oShape, 1000 + nCol * 600, 9000 + nRow * 600 )
            * Add shape to page
            oPage.Add( oShape )
        ENDFOR
    ENDFOR


    * Let's vary the saturation and brightness, while keeping the hue constant.
    * The hue will be yellow.
    * But you could vary any two parameters, while keeping the third constant.

    nHue = 0.1666 && yellow
    FOR nRow = 0 TO 9
        FOR nCol = 0 TO 9
            * Create a shape
            oShape = OOoMakeRectangleShape( oDoc )
            * Calculate color
            nSaturation = nRow / 9 && saturation varies *down* by row
            nBrightness = nCol / 9 && brightness varies *across* by column
            * set color of shape
            oShape.FillColor = OOoHSV( nHue, nSaturation, nBrightness )
            * Position and size the shape
            OOoSetSize( oShape, 500, 500 ) && 1/2 cm by 1/2 cm
            OOoSetPosition( oShape, 9000 + nCol * 600, 9000 + nRow * 600 )
            * Add shape to page
            oPage.Add( oShape )
        ENDFOR
    ENDFOR
   
   
    * Gee, you don't suppose someone out there could take the knowledge represented
    *  by this code and figure out how to make OpenOffice.org draw bar charts?
   
ENDPROC


PROCEDURE TestOOoCalc()
    * Create a spreadsheet.
    LOCAL oDoc
    oDoc = OOoCreateNewCalcDocument()
   
    * Get first sheet
    LOCAL oSheet
    oSheet = oDoc.getSheets().getByIndex( 0 )
   
    * Plug in some stuff...
    oSheet.getCellByPosition( 0, 0 ).setFormula( "Month" )
    oSheet.getCellByPosition( 1, 0 ).setFormula( "Sales" )
    oSheet.getCellByPosition( 0, 1 ).setFormula( "Jan" )
    oSheet.getCellByPosition( 0, 2 ).setFormula( "Feb" )
    oSheet.getCellByPosition( 0, 3 ).setFormula( "Mar" )
    oSheet.getCellByPosition( 0, 4 ).setFormula( "Apr" )
    oSheet.getCellByPosition( 0, 5 ).setFormula( "May" )
    oSheet.getCellByPosition( 0, 6 ).setFormula( "Jun" )
    oSheet.getCellByPosition( 1, 1 ).setValue( 3826 )
    oSheet.getCellByPosition( 1, 2 ).setValue( 3504 )
    oSheet.getCellByPosition( 1, 3 ).setValue( 2961 )
    oSheet.getCellByPosition( 1, 4 ).setValue( 2504 )
    oSheet.getCellByPosition( 1, 5 ).setValue( 2102 )
    oSheet.getCellByPosition( 1, 6 ).setValue( 1756 )
   
    LOCAL ARRAY aOneArg[1]
    LOCAL cFile, cURL
   
*    cFile = GetDesktopFolderPathname()+"example"
    cFile = "c:\example"

    * Now save the spreadsheet.
    cURL = OOoConvertToURL( cFile + ".sxw" )
    aOneArg[1] = OOoPropertyValue( "Overwrite", .T. )
    oDoc.storeToUrl( cURL,  [at]  aOneArg )
   
    * Now save it as Excel
    cURL = OOoConvertToURL( cFile + ".xls" )
    aOneArg[1] = OOoPropertyValue( "FilterName", "MS Excel 97" )
    oDoc.storeToUrl( cURL,  [at]  aOneArg )
ENDPROC




PROCEDURE CreateHueRainbow()
    * Create a drawing.
    LOCAL oDoc
    oDoc = OOoCreateNewDrawDocument()
   
    * Get the first page of the drawing.
    LOCAL oPage
    oPage = OOoGetDrawPage( oDoc, 0 )
   
    LOCAL nHue, nSaturation, nBrightness
    LOCAL nCol
    LOCAL oShape

    * Now let's draw some rectangles.

    * Let's vary the hue and saturation, while keeping the brightness constant.
    * But you could vary any two parameters, while keeping the third constant.
   
    nBrightness = 1.0 && full brightness
    nSaturation = 1.0 && full saturation
    FOR nCol = 0 TO 200
        * Create a shape
        oShape = OOoMakeRectangleShape( oDoc )
        * Calculate color
        nHue = nCol / 200 && hue varies *across* by column
        * set color of shape
        * oShape.FillColor = OOoRGB( 255, 255, 255 )
        oShape.FillColor = OOoHSV( nHue, nSaturation, nBrightness )
        * Position and size the shape
        OOoSetSize( oShape, 52, 2000 ) && 0.05 cm by 2 cm
        OOoSetPosition( oShape, 1000 + nCol * 50, 1000 )
        oShape.LineStyle = 0
        * Add shape to page
        oPage.Add( oShape )
    ENDFOR
   
    LOCAL cFile, cURL
*    cFile = GetDesktopFolderPathname()+"hue rainbow"
    cFile = "c:\hue rainbow"
    cURL = OOoConvertToURL( cFile + ".sxd" )
    LOCAL ARRAY aOneArg[1]
    aOneArg[1] = OOoPropertyValue( "Overwrite", .T. )
    oDoc.storeAsUrl( cURL,  [at]  aOneArg )
*    oDoc.dispose()
ENDPROC

Saya baru dapat dari google.. kiranya kalau ada yang masih pake produk m$ like VFP , VB6 masih bisa pake coding di atas.
Kurang lebih sama seh..
Yang lain.. jika ingin share pada bahasa pemograman lain juga bisa..

Source : http://www.tek-tips.com/viewthread.cfm?qid=1514000&page=1

Ini bukan milikku, ini bukan aku, ini bukan diriku
6 kelompok 6 - Chachakka Sutta MN 148

Offline HokBen

  • KalyanaMitta
  • *****
  • Posts: 1.525
  • Reputasi: 100
  • Gender: Male
Re: [ASK] Otomatisasi Office in Programming Language
« Reply #5 on: 02 March 2009, 09:10:05 AM »
pake Jxl hed...
class Java untuk Excel

http://jexcelapi.sourceforge.net/

kalo mau ntar gw kasi ntf yg udah pake jxl ini..
bisa untuk baca dan create file xls yg dibikin di office 2003 ke bawah tanpa perlu install office di komp ybs

Offline Forte

  • Sebelumnya FoxRockman
  • KalyanaMitta
  • *****
  • Posts: 16.577
  • Reputasi: 458
  • Gender: Male
  • not mine - not me - not myself
Re: [ASK] Otomatisasi Office in Programming Language
« Reply #6 on: 02 March 2009, 09:17:03 AM »
Wah.. ada yang lebih praktis ya..
Btw.. hanya excel aja ? ada gak buat word, dll juga ?

Cara pakenya juga sama ?
Ini bukan milikku, ini bukan aku, ini bukan diriku
6 kelompok 6 - Chachakka Sutta MN 148

Offline HokBen

  • KalyanaMitta
  • *****
  • Posts: 1.525
  • Reputasi: 100
  • Gender: Male
Re: [ASK] Otomatisasi Office in Programming Language
« Reply #7 on: 02 March 2009, 09:56:05 AM »
yg baru gw pake sh buat excel aja, word dll blum pernah...
cara pake untuk Jxl ini ya sama kayak manggil excel object gitu, create object excelnya, workbook, sheet, dll... trus bisa baca-tulis..

ada juga java lib untuk bikin pdf (iText), tapi yg ini blum pernah pake, baru baca2 doang...

Offline Forte

  • Sebelumnya FoxRockman
  • KalyanaMitta
  • *****
  • Posts: 16.577
  • Reputasi: 458
  • Gender: Male
  • not mine - not me - not myself
Re: [ASK] Otomatisasi Office in Programming Language
« Reply #8 on: 02 March 2009, 11:28:29 AM »
yg baru gw pake sh buat excel aja, word dll blum pernah...
cara pake untuk Jxl ini ya sama kayak manggil excel object gitu, create object excelnya, workbook, sheet, dll... trus bisa baca-tulis..

ada juga java lib untuk bikin pdf (iText), tapi yg ini blum pernah pake, baru baca2 doang...
kemarin ada seh ketemu.. pake excel9.h word9.h.. tapi harus pake #include..
Ini bukan milikku, ini bukan aku, ini bukan diriku
6 kelompok 6 - Chachakka Sutta MN 148

Offline HokBen

  • KalyanaMitta
  • *****
  • Posts: 1.525
  • Reputasi: 100
  • Gender: Male
Re: [ASK] Otomatisasi Office in Programming Language
« Reply #9 on: 02 March 2009, 01:47:24 PM »
yg baru gw pake sh buat excel aja, word dll blum pernah...
cara pake untuk Jxl ini ya sama kayak manggil excel object gitu, create object excelnya, workbook, sheet, dll... trus bisa baca-tulis..

ada juga java lib untuk bikin pdf (iText), tapi yg ini blum pernah pake, baru baca2 doang...
kemarin ada seh ketemu.. pake excel9.h word9.h.. tapi harus pake #include..

di C++ yah?
ga pernah make C++ lagi sejak lulus :P

Offline Forte

  • Sebelumnya FoxRockman
  • KalyanaMitta
  • *****
  • Posts: 16.577
  • Reputasi: 458
  • Gender: Male
  • not mine - not me - not myself
Re: [ASK] Otomatisasi Office in Programming Language
« Reply #10 on: 02 March 2009, 01:55:28 PM »
di VFP juga bisa..
gw kemarin lihat sempat kaget juga..
code nya pake #include excel9.h

keren abis bok.. gw udah testing.. emang jalan.. tapi masih ragu.. apakah dipanggil benaran dari excel9.h atau jangan2 dari office2003 di lappie gw :))
Ini bukan milikku, ini bukan aku, ini bukan diriku
6 kelompok 6 - Chachakka Sutta MN 148