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@pitonyak.org]
Sent: 2015年6月5日19:15
To: Zhang, William
Cc: libreoffice@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@ptn.advantest.com
<mailto:william.zhang@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
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.