1

Konu: Excel yerine Open Office i kullanabilirmiyim?

Merhaba.
Bilindiği üzere bir excel dosyası açıp içindeki hücre verilerini aşağıdaki gibi değiştirebiliyoruz.

dosya_tut = "REPORTS\temp.xls"
objXLsheet=CreateObject("Excel.Application")
objXLsheet.application.visible=.T.
objXLsheet.Workbooks.Open(dosya_tut)
objXLsheet.Cells(2,7).Value = "aaa"
...

Bilgisayarda ofis yoksa onun yerine Open Office varsa bunu nasıl anlarım ve Open Office i kullanarak bu excel dosyasına verileri nasıl girerim.

Şimdiden çok teşekkürler.

2

Re: Excel yerine Open Office i kullanabilirmiyim?

Soykan beyin bu konu ile ilgili çalışması vardı.

http://www.fox4um.com/topic/1319/serafe … on-ornegi/

3

Re: Excel yerine Open Office i kullanabilirmiyim?

Tekrar merhaba.
Var olan bir excel dosyası açma  içine veri yazma ve resim ekleme ile ilgili aşağıdaki kodu bulup uyarladım. Belki kullanıcıların işine yarayabilir.
excel dosya ve resim dosya yollarını kendinize göre değiştirerek çalıştırısanız sorun çıkmaz sanırım.

*--open ofis kurulumu?
install_openoffice = OOoIsInstalled()
If install_openoffice
    =Messagebox("open office kurulu",64,"")
Endif

*--varolan bir excel dosyasi cagir
oDoc = OOoOpenFile("Z:\vfp_projeleri2\analiz\sound\lacrosse\REPORTS\clip_actions_list.xls")

Local oSheet
oSheet = oDoc.getSheets().getByIndex( 0 )


* hucrelere veri ekleme sutun,satir
oSheet.getCellByPosition( 0, 7 ).setString( "Julaaaa" )
oSheet.getCellByPosition( 0, 8 ).setString( "Aug" )
oSheet.getCellByPosition( 0, 9 ).setString( "Sep" )
oSheet.getCellByPosition( 0, 10 ).setString( "Oct" )
oSheet.getCellByPosition( 0, 11 ).setString( "Nov" )
oSheet.getCellByPosition( 0, 12 ).setString( "Dec" )


*--resim ekleme basi
Document   = oDoc.CurrentController.Frame
oooServiceManager = Createobject("com.sun.star.ServiceManager")
dispatcher = oooServiceManager.createInstance("com.sun.star.frame.DispatchHelper")


Local Array args1[1]
args1[1] = OOoPropertyValue( "ToPoint", "$C$5" )
dispatcher.executeDispatch(Document, ".uno:GoToCell", "", 0, @args1)

Local Array args2[3]
args2[1] = OOoPropertyValue( "FileName", "file:///C:/Users/Bilal ADAY.KARANFILALANI/Desktop/5.png" )
args2[2] = OOoPropertyValue( "FilterName", "<All formats>" )
args2[3] = OOoPropertyValue( "AsLink", .F. )

dispatcher.executeDispatch(Document, ".uno:InsertGraphic", "", 0, @args2)
*--resim ekleme sonu

*args1[1] = OOoPropertyValue( "ToPoint", "$Z$25" )
*dispatcher.executeDispatch(Document, ".uno:GoToCell", "", 0, @args1)

*dispatcher.executeDispatch(Document, ".uno:InsertGraphic", "", 0, @args2)


*--open ofis kurulumu basi
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

Function OOoGetServiceManager()
If (Type([goOOoServiceManager])!="O")  Or  Isnull( goOOoServiceManager )
    Public goOOoServiceManager
    goOOoServiceManager = Createobject( "com.sun.star.ServiceManager" )
Endif
Return goOOoServiceManager
Endfunc
*--open ofis kurulumu sonu


*--varolan bir excel dosyasi cagir basi
Function OOoOpenFile( cFilename )
Local cURL
cURL = OOoConvertToURL( cFilename )

Local oDoc
oDoc = OOoOpenURL( cURL )
Return oDoc
Endfunc

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

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, @ aNoArgs )

* Make sure that arrays passed to this document are passed zero based.
Comarray( oDoc, 10 )

Return oDoc
Endfunc

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

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

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

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

4

Re: Excel yerine Open Office i kullanabilirmiyim?

Espor;

Çok teşekkür ediyorum. Kendi arşivime aldım smile

Ellerine sağlık...

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü