Creating an Open Office spreadsheet file .xls

User avatar
anserkk
Posts: 1333
Joined: Fri Jun 13, 2008 11:04 am
Location: Kochi, India
Has thanked: 1 time

Re: Creating an Open Office spreadsheet file .xls

Post by anserkk »

Dear Mr.Rick,

Right now, I don't have OpenOffice/Libre Office installed on the Laptop which I am using right now. :( (I have never tried LibreOffice) On a later date, I shall install and check.

1. After a fresh reboot of you PC, please check the process list via your task manager and note whether the soffice.bin or soffice.exe is running in the background
I believe that it will not be there.
2. Open Calc from your PC's menu and then quit OpenOffice Calc.
3. Now please re-check whether soffice.bin/soffice.exe is there in the process list via task manager. I believe that it will be there.

If soffice.bin/soffice.exe is still there in the process list then, I may be wrong, but I think that soffice.exe or soffice.bin remains in the process list even if you close the OpenOffice Calc. I am not sure whether this is done purposefully to enable fast loading (QuickStart) of OpenOffice application OR an OpenOffice bug.

Regards

Anser
User avatar
Rick Lipkin
Posts: 2668
Joined: Fri Oct 07, 2005 1:50 pm
Location: Columbia, South Carolina USA

Re: Creating an Open Office spreadsheet file .xls

Post by Rick Lipkin »

Anser

Soffice.exe and soffice.bin are still present after I close the oBook .. Like you allude to .. there does not seem to be a way to close the oCalc service .. terminate() does not work .. see this thread ..

Rick Lipkin

Rocko wrote:
I didn't find the solution, but I can confirm this is the default behavior of OO 3.0: when you hit the window close button of the last document open then soffice.exe and soffice.bin are killed.


soffice.exe as soffice.bin aren't killed if you close the document with "Window-Close window", "file->Close", or the small "x" in top-right corner (this one only apears when there is only one document opened). What you are doing is the same as Alt+F4.

Calling oDocument.close(False) is not the same thing. Here you are calling ".uno:CloseDoc" or maybe ".uno:CloseWin" (still don't understand the difference). To close the office you must call oDesktop:terminate() - I imagine that OOo internaly calls ".uno:Quit"

So, to kill soffice.exe and soffice.bin you must trigger oDesktop:terminate() if the document is the last one opened.

I hope it's more clear now Smile
Back to top
View user's profile Send private message
B Marcelly
Super User
Super User


Joined: 12 May 2004
Posts: 1297
Location: France

PostPosted: Sat Nov 15, 2008 10:14 am Post subject: Reply with quote
Hi,
You must close(True) your document.
After closing your document, check if there is still another component.
Code:
Call oDocument.Close(True)
set DocsColls = oDesktop.Components.createEnumeration
if not DocsColls.hasMoreElements then
oDesktop.terminate
end if
Set oDocument = Nothing
Set oDesktop = Nothing
Set oServiceManager = Nothing
______
Bernard
Back to top
View user's profile Send private message Visit poster's website
Rocko
General User
General User


Joined: 04 Nov 2008
Posts: 17


PostPosted: Sun Nov 16, 2008 9:46 am Post subject: Reply with quote
Thanks, that worked.
Back to top
View user's profile Send private message
BrianS
General User
General User


Joined: 10 Jun 2008
Posts: 38


PostPosted: Mon Nov 17, 2008 6:46 am Post subject: Reply with quote
B Marcelly wrote:
Hi,
You must close(True) your document.
After closing your document, check if there is still another component.
Code:
Call oDocument.Close(True)
set DocsColls = oDesktop.Components.createEnumeration
if not DocsColls.hasMoreElements then
oDesktop.terminate
end if
Set oDocument = Nothing
Set oDesktop = Nothing
Set oServiceManager = Nothing
______
Bernard


Are you sure this works if Quickstarter is running? From what I experienced, the desktop.terminate method won't work with Quickstarter... I had to do this to handle Quickstarter:
Code:

Call objQuickstart.setFastPropertyValue(0, False)
Back to top
View user's profile Send private message
B Marcelly
Super User
Super User


Joined: 12 May 2004
Posts: 1297
Location: France

PostPosted: Mon Nov 17, 2008 12:20 pm Post subject: Reply with quote
Hi,
BrianS wrote:
Are you sure this works if Quickstarter is running?

The previous discussion let me suppose that the user does not use the Quickstarter.
To circumvent the possible use of the Quickstarter do this:
Code:
oDesktop.SuspendQuickstartVeto = True
oDesktop.terminate
Back to top
View user's profile Send private message Visit poster's website
BrianS
General User
General User


Joined: 10 Jun 2008
Posts: 38


PostPosted: Mon Nov 17, 2008 12:50 pm Post subject: Reply with quote
B Marcelly wrote:
Hi,
BrianS wrote:
Are you sure this works if Quickstarter is running?

The previous discussion let me suppose that the user does not use the Quickstarter.
To circumvent the possible use of the Quickstarter do this:
Code:
oDesktop.SuspendQuickstartVeto = True
oDesktop.terminate


Thanks... That works the same as what I had done with setFastPropertyValue, but is a bit cleaner and is a bit more descriptive, so I'll use that instead...

ShumingWang
Posts: 465
Joined: Sun Oct 30, 2005 6:37 am
Location: Guangzhou(Canton),China
Contact:

Re: Creating an Open Office spreadsheet file .xls

Post by ShumingWang »

oSheet:GetCellByPosition( 0, nRow ):SetString :="aaa"
should change into
oSheet:GetCellByPosition( 0, nRow ):SetString ("aaa")
http://www.xtech2.top
Mobile:(86)13802729058
Email:100200651@qq.com
QQ:100200651
Weixin: qq100200651
User avatar
Rick Lipkin
Posts: 2668
Joined: Fri Oct 07, 2005 1:50 pm
Location: Columbia, South Carolina USA

Re: Creating an Open Office spreadsheet file .xls

Post by Rick Lipkin »

Shuming

Tell me what the difference is with using SetString( "aaa" ) and assigning the value with the in-line equal operator ?? .. Using a character string makes it more difficult to write this :

oSheet:GetCellByPosition( 0, nRow ):SetString := D->address

Do you know how to close the oCalc object from the ServiceManager ?

oCalc := CreateObject( "com.sun.star.ServiceManager" )

It seems that the Office "stub" needs to stay resident in memory .. I have found no way to end(), Quit(), Terminate() the object ?

Rick
ADutheil
Posts: 368
Joined: Sun May 31, 2009 6:25 pm
Location: Salvador - Bahia - Brazil

Re: Creating an Open Office spreadsheet file .xls

Post by ADutheil »

You can try a brute force solution:

FUNCTION KillOO( cTask ) // cTask is the name of the OO stub
LOCAL nShel := fCreate( "kill.bat" )

fWrite( nShel, "taskkill /F /IM " + cTask )
fClose( nShel )
ShellExecute( 0, "open", "kill.bat",,, )
fErase( "kill.bat" )
RETURN ( NIL )
Regards,

André Dutheil
FWH 13.04 + HB 3.2 + MSVS 10
User avatar
Rick Lipkin
Posts: 2668
Joined: Fri Oct 07, 2005 1:50 pm
Location: Columbia, South Carolina USA

Re: Creating an Open Office spreadsheet file .xls

Post by Rick Lipkin »

André

Thanks .. I thought about that .. I figure Open Office and it successors do not want the ServiceManager closed .. my guess is it may effect other Open office programs already open if you close it :(

Rick
User avatar
goosfancito
Posts: 1955
Joined: Fri Oct 07, 2005 7:08 pm

Re: Creating an Open Office spreadsheet file .xls

Post by goosfancito »

Hello!

Some solution?

Thank´s
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
Maurizio
Posts: 826
Joined: Mon Oct 10, 2005 1:29 pm
Contact:

Re: Creating an Open Office spreadsheet file .xls

Post by Maurizio »

Hello
// This Close
  oBook:Close(.t.)
  oDesktop:Terminate()


Code: Select all | Expand

TRY
             oText := GetActiveObject( "com.sun.star.ServiceManager" )
       CATCH
          ? "Open Office non installato"
           Return nil
        END
  oDesktop := oText:CreateInstance( "com.sun.star.frame.Desktop" )
  aProp:={}
  AAdd(aProp,GetPropertyValue(oText, "Hidden", .T. )  )
  oBook   := oDesktop:LoadComponentFromURL( "file:///"+ cFile , "_blank", 0, aProp )
  oFoglio   := oBook:GetSheets():GetByIndex( 0 )

  //-------------------------------------------
  // This Close
  oBook:Close(.t.)
  oDesktop:Terminate()

 


Maurizio
http://www.nipeservice.com
User avatar
goosfancito
Posts: 1955
Joined: Fri Oct 07, 2005 7:08 pm

Re: Creating an Open Office spreadsheet file .xls

Post by goosfancito »

thanks
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
Post Reply