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