Q: How to get the path of all opened spreadsheet documents

Andrew Douglas Pitonyak andrew at pitonyak.org
Mon Jun 8 04:20:00 PDT 2015


Calc documents implement the following service:

com.sun.star.sheet.SpreadsheetDocument

Using that with the examples below based on a write document:


'******************************************************************************************
'// Count the total number of open componets.
'// This includes all document types as well
'// as things such as the Basic IDE and help windows.
'******************************************************************************************
Function numberOfOpenComponents As Integer
   Dim i As Integer
   Dim oDocs
   Dim oDoc
   i = 0

   oDocs = StarDesktop.getComponents().createEnumeration()
   Do While oDocs.hasMoreElements()
     oDoc = oDocs.nextElement()
     i = i + 1
   Loop
   numberOfOpenComponents = i
End Function

'******************************************************************************************
'// Count number of open Write documents.
'******************************************************************************************
Function countOpenWriteDocs() As Integer
   countOpenWriteDocs = 
countTypedComponents("com.sun.star.text.TextDocument")
End Function

'******************************************************************************************
'// Count number of documents that are open with the specified service type.
'******************************************************************************************
Function countTypedComponents(serviceName$) As Integer
   Dim i As Integer
   Dim oDocs
   Dim oDoc
   i = 0

   oDocs = StarDesktop.getComponents().createEnumeration()
   Do While oDocs.hasMoreElements()
     oDoc = oDocs.nextElement()
     If oDoc.supportsService(serviceName) Then
       i = i + 1
     End If
   Loop
   countTypedComponents = i
End Function

'******************************************************************************************
'// Return true if the specified document is a Write document.
'******************************************************************************************
Function isWriteDocument(oDoc) As Boolean
   If IsNull(oDoc) Then
     isWriteDocument = False
   ElseIf IsEmpty(oDoc) Then
     isWriteDocument = False
   ElseIf  oDoc.supportsService("com.sun.star.text.TextDocument") Then
     isWriteDocument = True
   Else
     isWriteDocument = False
   End If
End Function




On 06/07/2015 09:21 PM, Zhang, William wrote:
>
> Hi Andrew,
>
> Thanks a lot for your reply.
>
> Q1: In your case do you only care about documents that have been 
> saved... Ignoring new never saved to disk docs?
>
> àWhat I want to get is all calc documents as long as the doc is 
> opened, no matter it have been saved or not.
>
>   So firstly, I want to know if it’s possible to do it in this case. 
> If no, maybe I can only care the doc which have been saved and ignore 
> which is not saved.
>
> Q2: You enumerate the open components from the desktop object and 
> check of the component is a calc document.
>
> àSorry, I know how to get the desktop object, but I am not clear how 
> to get the open component and check them as you mentioned.
>
>   This is my gap, would you please give example code based on my 
> comment for Q1?
>
> Thanks in advanced!
>
> Best Regards
>
> William
>
> -----Original Message-----
> From: Andrew Pitonyak [mailto:andrew at pitonyak.org]
> Sent: 2015年6月5日19:15
> To: Zhang, William
> Cc: libreoffice at lists.freedesktop.org
> Subject: Re: Q: How to get the path of all opened spreadsheet documents
>
> No time to find the solution now.... But I have done this sort of 
> thing in basic.
>
> You enumerate the open components from the desktop object and check of 
> the component is a calc document.
>
> In your case do you only care about documents that have been saved... 
> Ignoring new never saved to disk docs?
>
> Think I can find a basic example of it helps
>
> On Jun 4, 2015 10:35 PM, "Zhang, William" 
> <william.zhang at ptn.advantest.com 
> <mailto:william.zhang at ptn.advantest.com>> wrote:
>
> >
>
> > Hi,
>
> >
>
> >
>
> >
>
> > Request:
>
> >
>
> > In RedHat7, I want to get the path of all opened spreadsheet documents with Java.
>
> >
>
> >
>
> >
>
> > What I’ve done:
>
> >
>
> > 1.I used Runtime.exec(cmd…) with Java code, the ‘cmd’was defined with 
> “ps –ef | grep xxx”
>
> >
>
> > ->if only one spreadsheet document opened, the returned info list the correct 
> document, I can parse it and get the file path
>
> >
>
> > ->but if multi spreadsheet documents opened, the returned process still only 
> list the first document, I cannot get other documents.
>
> >
>
> >2.I also test in bash, it seems “ps -ef”cannot list all files.
>
> >
>
> >
>
> >
>
> > So , I want to know is there any other way to do it. such as using UNO service with 
> libreoffice API to get it.
>
> >
>
> > Anyone who knows it is much appreciate.
>
> >
>
> >
>
> >
>
> > Best Regards
>
> >
>
> > William
>
> >
>
> >
>

-- 
Andrew Pitonyak
My Macro Document: http://www.pitonyak.org/AndrewMacro.odt
Info:  http://www.pitonyak.org/oo.php

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/libreoffice/attachments/20150608/7ce537c5/attachment.html>


More information about the LibreOffice mailing list